热力图数据更新后视图不刷新怎么办?
我用 React + ECharts 做了个热力图组件,数据从 props 传进来。但当我父组件状态更新、传入新数据时,热力图却没重新渲染,还是显示旧的。明明 console.log 打印出来的新数据是对的,就是图表不动。
我试过在 useEffect 里 setOption,也加了 key 强制重建,都不行。是不是我漏了什么配置?
useEffect(() => {
if (chartRef.current) {
const chart = echarts.init(chartRef.current);
chart.setOption({
series: [{
type: 'heatmap',
data: props.heatData // 这个变了但图没变
}]
});
}
}, [props.heatData]);
用 useRef 存一下实例:
我之前也遇到过,setOption 的第二个参数设为 true(notMerge),不然它会跟旧配置合并,有时候也会出问题。另外别忘了在组件卸载时 dispose 掉,不然内存泄漏等着你。