我用的是高查特和React。
目前我创建了一个启动选项:
/**
* Initial chart options, with "loading" enabled
*/
const chartOptions = {
accessibility: {
enabled: false
},
chart: {
type: "column",
events: {
load() {
const chart = this;
chart.showLoading(`${LOADING}...`);
}
}
}
};
在这个组件中,我调用了一个API,它返回一些要使用的数据。因此,此时,我想删除“加载”并添加数据。
我暂时用以下公式求解:
const [options, setOptions] = useState(chartOptions);
useEffect(() => {
if (detail) {
setOptions({
...chartOptions,
chart: {
type: "column"
},
xAxis: {
categories: detail.map(
(item) =>
`${item.data_em.substring(4, 6)}/${item.data_em.substring(0, 4)}`
)
},
series: [
{
name: "Alfa",
color: "#69BC66",
data: detail.map((item) => item.ricevuti)
},
{
name: "Beta",
color: "#DC3545",
data: detail.map((item) => item.mancanti)
},
]
});
}
}, [detail]);
<ChartComponent options={options} />
所以,当数据准备好时,在本地状态中设置一个新的选项。但我想象,以这种方式,我会得到一个不同的图表。
这是可行的,但有更好的方法吗?
1条答案
按热度按时间2nbm6dog1#
使用
highcharts-react-official
Package 器时,仅当启用immutable
选项时,才会在状态更新时重新创建图表。否则,仅调用chart.update
方法来应用更改。因此,最好只应用新选项。在您的情况下,它将是:
实时演示:https://codesandbox.io/s/highcharts-react-demo-3lvomg?file=/demo.jsx
**文件:**www.npmjs.com/package/highcharts-react-official#optimal-way-to-update