一个页面上多个echart图表的自适应问题,亲测有效!!!(作者是Vue2项目)

文章介绍了如何处理Echarts图表在页面中多个存在时的自适应问题,通过使用addEventListener来添加和移除窗口大小改变事件,确保每个图表都能正确响应窗口变化,并且在组件销毁时移除事件监听器以防止内存泄漏。提供了具体的Vue.js组件生命周期方法示例。
摘要由CSDN通过智能技术生成

根据echars官网,单个echar图自适应用法如下

window.onresize = () => {
    this.myChart.resize();
};

以上方法有个问题,就是在一个页面存在多个echart图,自适应的时候只会适应最后进行渲染的一个echart图。

由此引出下面这种写法,将简写的onresize更换为addEventListener。

添加事件监听器记得在离开时移除事件监听器,避免内存泄漏!

要移除事件监听器,事件的函数就需要使用具名函数!

data() {
    return {
        myChart:''
    }
}
mounted() {
    this.loadChart();
}
beforeDestroy() {
    // 离开页面必须进行移除,否则会造成内存泄漏,导致卡顿
    window.removeEventListener('resize', this.resizeFn);
}
methods: {
    // 渲染echart图
    loadChart() {
        // 获取绘图的节点,并初始化
        this.myChart = this.$echarts.init(document.getElementById('chart'));
        // 自己项目echart图的配置
        const chartOption = {...} 
        this.myChart.setOption(chartOption);
        setTimeout(() => {
            window.addEventListener('resize', this.resizeFn);
        }, 100)
    }
    // 使用具名自适应函数,用于离开页面时可以卸载监听事件使用
    resizeFn() {
        return this.myChart.resize();
    }
}

我们可以在控制台打开Element -> EventListeners ->点击下图的刷新图标。

查看我们现在的事件监听器,每个resize对应的是不同的echart图我们给绑的事件监听器。

当我们需要验证离开页面是否移除事件监听时就可以在跳转页面后,点击下图标注的刷新图标,看看事件是否移除,保证内存不泄露。

希望能帮助到需要的人,存在错误之处请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值