解决echarts不是响应式的问题,并解决移除window.addEventListener问题

首先我在解决echarts响应式问题中遇到最大的困难是如何移除window.addEventListener?

目标一:给echarts添加响应式代码:

window.addEventListener("resize", () => {
	myChart.resize()
}); 

在echarts后面填上这段代码就可以实现页面响应式的改变echarts图的大小,但是这段代码是全局window的方法,使所有页面都一直加载着myChart.resize(),从而导致卡面卡顿

目标二:改造这段响应式代码:

data(){
	return {myChar1:""}  // 声明echats变量
}
mounted() { 
    this.loadLine(); // 运行echats图
    window.addEventListener("resize", this.handleResizeMyChart1); // 加载resize方法
  },
methods:{
	handleResizeMyChart1() {
    	this.myChart1.resize(); //resize方法
  	},
},
beforeDestroy() { // 页面销毁前
  console.log('销毁');
  window.removeEventListener("resize", this.handleResizeMyChart1); // 移除resize方法
},

为什么要单独写一个resize方法?不直接这样:

window.addEventListener("resize", ()=>{
	this.myChart1.resize();
});

原因是: 通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除;移除时传入的参数与添加处理程序时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数无法移除,所以需要单独写一个resize方法

下面是我最终的方案
请添加图片描述

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值