热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Chartjs无法读取未定义的属性数据集

如何解决《Chartjs无法读取未定义的属性数据集》经验,为你挑选了1个好方法。

我正在开发一个React应用程序并尝试让Chartjs从其npm包中导入它.以下是初始化代码:

//in my constructor
this.usageChart = null;

//in componentDidMount
let chartCOntext= document.getElementById("proc_usage");
let initialDataIdle = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100];
let initialDataOther = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

console.log("Creating chart");
this.usageChart = new Chart(chartContext, {
  type: "line",
  data: {
    datasets: [
      { label: "User", fill: true, data: initialDataOther, backgroundColor: "rgba(244, 143, 177, 0.8)" },
      { label: "System", fill: true, data: initialDataOther, backgroundColor: "rgba(255, 235, 59, 0.8)" },
      { label: "IRQ", fill: true, data: initialDataOther, backgroundColor: "rgba(100, 181, 246, 0.8)" },
      { label: "Idle", fill: true, data: initialDataIdle, backgroundColor: "rgba(150, 150, 150, 0.4)" }
    ]
  },
  options: {
    scales: {
      xAxes: [{ stacked: true }],
      yAxes: [{ stacked: true }]
    },
    plugins: {
      stacked100: { enable: true }
    }
  }
});
console.log("Chart created: " + this.usageChart.data);

问题是当我尝试更新图表时,this.usageChart.data未定义.实际上,在console.log()初始化期间的最后一次调用中,它也是未定义的.我看不出我做错了什么.我正在加载一个插件,它允许将折线图绘制为堆叠,代表百分比的线之间的区域.我不知道是否这个插件可能是问题,但我没有得到任何错误,代码或多或少地从插件的示例代码中逐字逐句.

这是我更新图表的代码:

//from componentDidUpdate
usages['User'] = userUsage;
usages['System'] = sysUsage;
usages['IRQ'] = irqUsage;
usages['Idle'] = idleUsage;

console.log("updating chart");
this.usageChart.data.datasets.forEach((dataset) => {
  dataset.data.shift();
  dataset.data.push(usages[dataset.label]);
});
this.usageChart.update();
console.log("chart updated");

luke.. 5

我确实为您创建了一个小提琴(我只是将您的代码复制到自定义组件中),并且在我的情况下没有错误。

我认为这里周围有错误,因为您的图表未正确更新:

this.usageChart.data.datasets.forEach((dataset) => {
  dataset.data.shift();
  dataset.data.push(usages[dataset.label]);
});

更正的版本:

您错误地更新了数据集:

this.usageChart.data.datasets.forEach((dataset) => {
  dataset.data.shift();
  dataset.data = usages[dataset.label];
});

请检查工作提琴,并将其与您的项目进行比较。



1> luke..:

我确实为您创建了一个小提琴(我只是将您的代码复制到自定义组件中),并且在我的情况下没有错误。

我认为这里周围有错误,因为您的图表未正确更新:

this.usageChart.data.datasets.forEach((dataset) => {
  dataset.data.shift();
  dataset.data.push(usages[dataset.label]);
});

更正的版本:

您错误地更新了数据集:

this.usageChart.data.datasets.forEach((dataset) => {
  dataset.data.shift();
  dataset.data = usages[dataset.label];
});

请检查工作提琴,并将其与您的项目进行比较。


推荐阅读
author-avatar
醒不睡睡不醒_269
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有