小程序引用 ec-canvas / echarts 渲染报错 Cannot read property ‘baseOption‘ of undefined

当小程序进引用该组件时,首次进入页面可以正常渲染,但是再次进入页面时汇报错Cannot read property 'baseOption' of undefined,因为上一次进入页面已经创建实例,是存在缓存的,所以当存在实例又再次创建时就会报错,第一时间会想到用 dispose()来销毁,小编尝试过,但没有用,所以,用另一个方法来避过这个坑

用dispose()解决的逻辑:

if (chart != null && chart != "" && chart != undefined) {
	      chart.dispose(); //销毁, 会报错
}

 有效的做法是:

原代码:

let chart = null;
let option = {
    title: {
        text: '获取数据中',
        left: 'center'
    },
};
let initChart = (canvas, width, height, dpr) => {
    chart = echarts.init(canvas, null, {
        width: width,
        height: height,
        devicePixelRatio: dpr
    });
    chart.showLoading(); // 显示Loading
    
    return chart;
};


修改后代码:

let chart = null;
let option = {
    title: {
        text: '获取数据中',
        left: 'center'
    },
};
let initChart = (canvas, width, height, dpr) => {
    chart = echarts.init(canvas, null, {
        width: width,
        height: height,
        devicePixelRatio: dpr
    });
    chart.showLoading(); // 显示Loading
    if (chart === null) { // 无实例时创建,有实例时不创建, 否则再次进入页面渲染时报错 Cannot read property 'baseOption' of undefined
        canvas.setChart(chart);
        option = chart.setOption(option);
    }
    return chart;
};

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值