Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

485
Vistas
No capturado (en promesa) TypeError: this.renderChart no es una función VueJs Chart.js

Estoy tratando de hacer un sitio de visualización de COVID19 usando Chart.js y VueJs

este es My App.vue que contiene la llamada API y almacena los datos en matrices

 <template> <div id="app" class="container"> <div class="row mt-5" v-if="PositiveCases.length > 0"> <div class="col"> <h2>Positives</h2> <lineChart :chartData="PositiveCases" :options="chartOptions" label="Positive" /> </div> </div> </div> </template> <script> import axios from "axios"; import moment from 'moment' import lineChart from "./components/lineChart.vue"; export default { name: 'App', components: { lineChart }, data(){ return{ PositiveCases : [], Deaths: [], Recoverd: [], chartOptions: { responsive: true, maintainAspectRatio: false } } }, async created(){ const {data} = await axios.get('https://api.covid19api.com/live/country/egypt') //console.log(data); data.forEach(d => { const date = moment(d.Date,"YYYYMMDD").format("MM/DD") const {Confirmed,Deaths,Recovered} = d this.PositiveCases.push({date, total : Confirmed}) this.Deaths.push({date, total : Deaths}) this.Recoverd.push({date, total : Recovered}) // console.log("PositiveCases",this.PositiveCases); // console.log("Deaths",this.Deaths); // console.log("Recoverd",this.Recoverd); }); } } </script>

y este es mi lineChart.vue que contiene el código del gráfico de líneas, los datos almacenados correctamente tanto en las fechas como en los totales

 <script> import {Line} from 'vue-chartjs' export default { extends: Line, props: { label:{ type: String, }, chartData:{ type: Array, }, options:{ type: Object, } }, mounted(){ const dates = this.chartData.map(d => d.date).reverse() const totals = this.chartData.map(d => d.total).reverse() console.log("dates",dates); console.log("totals",totals); this.renderChart({ labels: dates, datasets: [{ label: this.label, data: totals, }], },this.options ) } } </script>

el error en la consola dice

error de la consola

quiero saber cual es la solucion, todos los datos estan guardados correctamente en ambos archivos

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Está utilizando V4 de vue-chart.js, el proceso de creación de gráficos ha cambiado, como puede leer aquí en la guía de migración.

Entonces, en lugar de llamar a this.renderChart , que era la sintaxis anterior, ahora debe usar el componente real y pasarle los datos de esta manera:

 <template> <Bar :chart-data="chartData" /> </template> <script> // DataPage.vue import { Bar } from 'vue-chartjs' import { Chart, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js' Chart.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale) export default { name: 'BarChart', components: { Bar }, data() { return { chartData: { labels: [ 'January', 'February', 'March'], datasets: [ { label: 'Data One', backgroundColor: '#f87979', data: [40, 20, 12] } ] } } } } </script>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda