【发布时间】:2018-09-23 19:25:18
【问题描述】:
我在用 Highcharts 替换项目中的当前图表时遇到了一些问题。我正在使用 highcharts-react-official(和 highcharts)NPM 包,它不会从响应中呈现“所有内容”。
这个项目非常大,通过旧的图表实现来看,Rechart 似乎非常简单。从 API 响应中获取的当前数据是这样的(在 ComposedChart 包装器中):
data={chartData}
然后显示所有必要的数据。 我希望这将是一个简单的交换,并以相同的方式填充 Highcharts,但事实并非如此。
在返回方法中我有这个:
<HighchartsReact
highcharts={Highcharts}
options={options}
/>
我在渲染方法中的选项是这样的:
const options = {
chart: {
events: {
load: function () {
console.log(JSON.stringify(chartData[2].value))
}
}
},
title: {
text: ''
},
series: {
name: 'test',
data: chartData
}
这类作品。控制台日志确实打印了特定值,但如果我在系列中尝试它,比如 data:chartData[2].value 它不起作用。 在使用 data: chartData 时,它确实显示了来自对象的正确数量的条目,作为类别(在本例中为 6 个不同的条目),但仅此而已。是解析错误还是有什么问题?
谢谢!
--
编辑:
好的,这就是它现在的样子,而且它有点工作。
chart: {
events: {
load: () => {
this.state.testChart.map(data =>
testData.push({
name: data.time,
x: data.temp,
y: data.value
})
);
this.setState({ data: testData });
}
}
},
在我的系列中:
series: [{
type: 'column',
name: 'Current year',
data: testData
},
视觉结果是 Highcharts 在响应给我的数组中添加了所有 6 个对象(显示 6 个类别)。但不显示这 6 个条目中的任何数据。 它看起来像这样:
[
{time: "2018-10-11", temp: "21", value: "10"},
{time: "2018-10-10", temp: "12", value: "31"}
]
同时,当更改时间跨度时(例如单击按钮以显示处理 HC 之外的 testChart 的前一周),这 6 个条目(以及因此 HC 中的类别)会发生变化,正如预期的那样。所以这看起来像我需要走的路,但我如何让数据可见?我错过了什么?
【问题讨论】:
-
您好,至于您的编辑,数据中的值必须是数字而不是字符串。
-
我测试了在响应中快速转换它们,在 testData.push 方法中,例如 x: Number(data.temp) 这没有帮助。
-
嗨,mtorn,你能准备一些最小的实例吗?
-
我做了一个简单的例子,但它没有完全工作,但也许你得到了它的图片。 codesandbox.io/s/5m99q7nkp
-
Hi mtorn,谢谢你的例子,现在看问题容易多了。您不能在
load事件中转换数据,因为它是在下载之前。现场演示:codesandbox.io/s/q3z4k1k9yw
标签: json reactjs highcharts react-highcharts