解决react+echarts的项目中There is a chart instance already initialized on the dom警告

转载来自消除There is a chart instance already initialized on the dom. React中使用echarts - 代码先锋网

使用echarts.getInstanceByDom获取之前可能创建过的实例,如果有则继续使用这个实例,否则创建

import * as echarts from 'echarts';
import { useEffect } from 'react'

function EchartsCom(props: any) {
    let chartDom: any
    let myCharts: any
    const getEchartsData = (objs: any) => { //获取echarts中的数据
        return {
            xAxis: {
                type: 'category',
                data: objs.xAxis
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    data: objs.series,
                    type: 'line'
                }
            ]
        }

    }
    // 监听父组件中传递的数据变化
    useEffect(() => {
        if (props?.objs) {
            chartDom = document.getElementById('main');
            myCharts = echarts.getInstanceByDom(chartDom); //获取之前的echarts的实例
            if (!myCharts) { //没有就初始化echarts实例
                myCharts = echarts.init(chartDom);
            }
            myCharts.setOption(getEchartsData(props?.objs)) //调用echarts
        }
    }, [props.objs])

    return (
        <div id="main" style={{ width: 100 + '%', height: '340px' }}></div>
    )
}

export default EchartsCom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值