【发布时间】:2016-12-01 05:13:33
【问题描述】:
我的代码使用 ultimatejs:tracker-react 和 react-highcharts 使用从 Mongodb 集合中提取的实时数据绘制图表。为简单起见,启用了autopublish 包。
问题:在为 Highcharts 设置初始数据系列后,chart.series[0].setData([5,4,3,2,1]) 更新了系列,但新数据并未绘制在图表上。图表仍然显示 Highcharts 初始化的最初 3 个点。
我们如何在 highcharts 图表上绘制新的series 值?
import React, { Component, PropTypes } from 'react';
import ReactDOM from 'react-dom';
import TrackerReact from 'meteor/ultimatejs:tracker-react';
import ReactHighcharts from 'react-highcharts';
import { Pressure } from '../api/pressure.js';
export class PressureChart extends TrackerReact(Component) {
// Returns data in the Highcharts series format
seriesData() {
const result = Pressure.find().fetch();
pressure = _.pluck(result, 'pressure');
pressure = pressure.map(p => Number(p))
time = _.pluck(result, 'timestamp');
series = _.zip(time, pressure);
return pressure
}
updateChart() {
let chart = this.refs.chart.getChart()
console.log(chart.series[0].data) // Echos out an array of 3 elements
chart.series[0].setData([5,4,3,2,1]) // Tests using this array, instead of array pulled from Collection
console.log(chart.series[0].data) // Echos out an array of 5 elements
}
render() {
const config = {
series: [{
data: [1,2,3]
}]
};
if(this.seriesData().length){
this.updateChart()
}
return (
<ReactHighcharts config={config} ref="chart"></ReactHighcharts>
)
}
}
【问题讨论】:
-
您是否尝试显式调用
chart.redraw()? -
@Khang 是的,我在
.setData()之后立即致电chart.redraw()。那并没有重绘图表。奇怪.....
标签: javascript reactjs meteor highcharts meteor-react