我正在用chart.js.建立一个动态图表
在组件DDMount中,我使用setInterval每秒钟调用getNewData()。
这会更新我的数据集中的数据,由于某些原因,图表在状态更新时不会更新/重新呈现。
添加新数据时,如何让图表更新其点?
组件代码:
import React, {Component} from 'react';
import { Line } from 'react-chartjs-2';
import 'chartjs-plugin-lineheight-annotation';
import './styles.scss';
export default class SmallCard extends Component {
constructor(props) {
super(props);
this.state = {
data: {
labels: ["1", "2", "3", "4", "5"],
datasets: [
{
label: "Videos Made",
backgroundColor: "rgba(255, 0, 255, 0.75)",
data: [4, 5, 1, 10, 32, 2, 12]
},
{
label: "Subscriptions",
backgroundColor: "rgba(0, 255, 0, 0.75)",
data: [14, 15, 21, 0, 12, 24, 32]
}
]
}
}
}
componentDidMount() {
this.interval = setInterval(() => this.getNewData(), 1000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
getNewData() {
const min = 1;
const max = 10;
const rand = min + Math.floor(Math.random() * (max - min));
this.setState({
data: {
datasets: this.state.data.datasets.map((item, index) => ({
...item,
data: [...this.state.data.datasets[index].data, rand]
}))
}
});
}
setGradientColour = (canvas, colour) => {
const ctx = canvas.getContext('2d');
//console.log("ctx", ctx)
const gradient = ctx.createLinearGradient(0, 0, 0, 400);
gradient.addColorStop(0, colour);
gradient.addColorStop(0.95, "rgba(133, 255, 144, 0.85");
return gradient;
}
getChartData = canvas => {
const { data } = this.state;
if(data.datasets) {
let colors = ["rgba(255, 0, 255, 0.75)", "rgba(0, 255, 0, 0.75)"];
data.datasets.forEach((set, i) => {
set.backgroundColor = this.setGradientColour(canvas, colors[i]);
set.borderColor = "white";
set.borderWidth = 2;
})
}
return data;
}
render() {
const data = this.state.data.datasets[1].data;
console.log("data", data)
return (
<div className="small-card-wrap">
<Line
options={{
responsive: true,
lineHeightAnnotation: {
always: false,
hover: true,
color: 'white',
noDash: true
}
}}
data={this.getChartData} />
</div>
)
}
}
getNewData
未绑定到类上下文,因此setState
将失败。您可以使用arrow函数,使其继承封闭函数。
getNewData = () => {
const min = 1;
const max = 10;
const rand = min + Math.floor(Math.random() * (max - min));
this.setState({
data: {
datasets: this.state.data.datasets.map((item, index) => ({
...item,
data: [...this.state.data.datasets[index].data, rand]
}))
}
});
}
问题内容: 在这里,我尝试设置为’hello’,然后打印它,但是状态似乎为空。当我刚刚使用更新状态时怎么办?设置为全局变量。 问题答案: 从reactjs文档中: 不会立即变异,但会创建待处理的状态转换。调用此方法后进行访问可能会返回现有值。 https://facebook.github.io/react/docs/component- api.html 您可以做的是将状态更新后传递给回调函数:
我正在尝试新的hooks功能,并坚持认为我的状态没有更新。 实际上,状态已更新(我可以在console.log中看到更新的值,并且我的组件会重新运行useEffect),但是useEffect方法使用我的旧状态,并仅将签名保存给第一个用户,而活动用户在状态中确实发生了更改。 我想过添加useCallback,并将我的方法移动到use效果或组件本身,但我可以设法让它工作。 状态: 这是我的效果: 这
本文向大家介绍JS实现点击Radio动态更新table数据,包括了JS实现点击Radio动态更新table数据的使用技巧和注意事项,需要的朋友参考一下 tbody定义一个标签 当上面变化的,在js里面做拼接就行了,拼接结束 tbody.html(XXX) 以上所述是小编给大家介绍的JS实现点击Radio动态更新table数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
问题内容: 所以我有这个: newDealersDeckTotal只是一个数字数组,例如,但是没有给出正确的总数,但是呢?我什至设置了超时延迟,以查看是否可以解决问题。任何明显的还是我应该发布更多代码? 问题答案: 通常是异步的,这意味着在您处于状态时,它尚未更新。尝试将日志放入方法的回调中。状态更改完成后执行:
本文向大家介绍利用matplotlib实现根据实时数据动态更新图形,包括了利用matplotlib实现根据实时数据动态更新图形的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,直接上代码吧! 二 运行结果 以上这篇利用matplotlib实现根据实时数据动态更新图形就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
问题内容: 我正在读取一个JSON文件,其中包含某些人的名称和图像URI。在遍历结构时,我可以打印名称,但无法显示图像。我也看到了那个阵营不支持动态图像,所以我做了一个解决办法的建议在这里。 JSON格式 主要成分 问题答案: 根据您期望的图像数量,您可以尝试将文件放置在文件夹中,如下所示: 然后在您的中,如果您要剪裁 资产:/中的 部分字符串,则可以使用: 如果要处理大量图像,则文件将变得难以维