React使用echarts饼图时,更新数据后图表变回初始状态问题

问题描述:echarts饼图,按以下方式通过setOption()方法更新数据时候,看到图表闪烁了一下,然后又变回了初始状态

const newData = [
    { value: a, name: '变量a',itemStyle: { color: aColor } },
    { value: b, name: '变量b',itemStyle: { color: bColor} },
]

if (echartsRef.current) {
    let newOption = option
    newOption.legend.formatter = updateLegendFormatter(newData)
    newOption.series[0].data = newData
    setOption(newOption)
    const chartInstance = echartsRef.current.getEchartsInstance();
    chartInstance.setOption(newOption);
}

//updateLegendFormatter方法

    const updateLegendFormatter = (data) => {
        return function (name) {
            let target = data.find(item => item.name === name);
            return target ? `{a|${name}}\n\n{b|${target.value.toString()}}{c|个}` : '';
        };
    };

option的初始状态是通过const直接定义的

解决过程:通过useState的方式定义option,并在数据更新时定义一个临时的option等于旧option,直接更新最新option,并在更新时将整个option更新,问题解决,以下代码

const [option,setOption] = useState({
        //初始option
    })

const newData = [
            { value: a, name: '变量a',itemStyle: { color: aColor } },
            { value: b, name: '变量b',itemStyle: { color: bColor} },
        ]

if (echartsRef.current) {
            let newOption = option
            newOption.legend.formatter = updateLegendFormatter(newData)
            newOption.series[0].data = newData
            setOption(newOption)
            const chartInstance = echartsRef.current.getEchartsInstance();
            chartInstance.setOption(newOption);
}

html结构

                <ReactECharts
                    ref={echartsRef}
                    option={option}
                    style={{ height: '200px', width: '400px',marginTop:'20px' }}
                    echarts={echarts}
                />

问题原因目前仍未知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值