我目前正在使用 React JSX Highcharts 模块创建一个动态展示多个样条系列的图表(使用 .map 函数)
我有一个名为 DataLines 的全局变量,在我的渲染函数中我写了这个:
{DataLines.map(Line,index)=>
<SplineSeries key={index} id={Line.id} name={Line.name} data={Line.points}/>}
当 Datalines 包含两条线时,图表正确显示它。但是,当我从 DataLines 中删除第一行时,它会从图表中删除第二行(由图表底部的行名显示),并且图表本身实际上并没有改变,即使我们重新渲染它使用新的 DataLines。
此外,如果我的图表中有一条线,并且我将 DataLines 更改为保留另一条线,则它根本不会更新图表。
使用控制台日志我看到发送到渲染函数的数据是正确的。
什么可能导致这种情况,我该如何解决?这是模块的已知问题吗?
提前致谢!
编辑:我的服务器正在使用 c# 中的信号器,因此共享它会更加复杂,但这里是触发图表更新的事件:
createDataLines(lines){
lines.foreach(l=>{
lNewLine={
name:l.name,
id:l.id,
points:l.points,
}
l.points.foreach(p=>{
point={
x:p.time,
y:p.height,
}
lNewLine.points.push(point)
})
this.state.DataLines.push(lNewLine);
});
}
- 该函数是从 componentDidUpdate 调用的,并且使用父组件的设置状态将这些行作为道具接收。所以基本上当我收到新道具时,我会用新数据创建图表(然后我们又回到了图表没有正确更新的问题)。