reactjs - Highcharts 更新大数组
问题描述
在 React Redux 应用程序中,我有一个包含时间序列数据(大约 10k 数据点)的大型数组。数据由 redux 存储提供。该应用程序使用highcharts-react-official 2.x.x
. 大数组经常通过追加新数据点来更新(仅追加,现有数组元素是不可变的)。
由于这些更新,似乎图表每次都完全呈现。我怎样才能避免这种情况?
const options = {
series: [
{
type: 'line',
data: objectFromReduxStore.map(p => ([p.time.toMillis(), p.value])),
}
]
}
...
<HighchartsReact
highcharts={Highcharts}
options={options}
containerProps={{style: {height: '300px', width: '100%'}}}
/>
解决方案
highcharts-react-official
包装器使用方法chart.update(options)
来应用更改。在您的情况下,更有效的解决方案是获取图表参考并直接调用addPoint
系列上的方法。
constructor(props) {
super(props);
this.afterChartCreated = this.afterChartCreated.bind(this);
}
afterChartCreated(chart) {
this.internalChart = chart;
}
componentDidMount() {
setInterval(() => {
this.internalChart.series[0].addPoint(Math.random() * 5);
}, 1500);
}
render() {
return (
<HighchartsReact
highcharts={Highcharts}
options={options}
callback={this.afterChartCreated}
/>
);
}
现场演示: https ://codesandbox.io/s/highcharts-react-demo-gp6n6?file=/demo.jsx
API 参考: https ://api.highcharts.com/class-reference/Highcharts.Series#addPoint
推荐阅读
- java - JPA Spring 存储库 findAll() 返回一个空列表
- python - 为什么我无法在请求中获取成功但在浏览器中成功打开
- java - MYSQL SELECT from Two Tables,收入减去费用=总收入
- javascript - JavaScript Canvas 问题理解对象移动
- reactjs - Node 尝试编译 SVG 文件
- reactjs - 在 react.js 中将数据动态绑定到 InnerHTML
- javascript - Jquery window.resize(event) => {} 适用于检查元素,但不适用于调整 chrome(或边缘)窗口的大小
- python - 运行 python 可执行文件时没有名为“请求”的模块,即使它已安装
- python - 如何在 min 函数中使用条件语句
- python - 如何在 matplotlib 中旋转条形图?