Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

489
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!