当前位置:首页 > 程序心得 > 正文内容

window onresize事件注意一下效率问题

admin7年前 (2019-06-11)程序心得1533

今天在写 vue 项目的时候, echarts 图标需要随着 窗口变化适配,在使用 onresize 的时候,延时器代码不会写了,这里再记录下

代码如下

	mounted() {
	      // 添加 echarts 窗口变化 事件
	      // side-menu 变化 ,直接通知吧(这个影响不大,有需要再添加吧)
	      window.addEventListener('resize', this.echartsResize);
	    },
	     methods: {
	      echartsResize() {
	        if(this.timer) clearTimeout(this.timer);
	        this.timer = setTimeout(() => { // 只执行最后一个定时器的 结果
	          this.$refs[this.activeName].echartsResize();
	         }, 300); // 推迟 300 ms 在执行resize 效果 
	      }
	    },
	    beforeDestroy() {
	      window.removeEventListener("resize", this.echartsResize); // 通过有名函数 解除事件订阅
	    }

注意点:

  1. 添加延时器 目的在于onresize 的过程中,只会执行最后一个延时器的代码,即代码只会执行一次

  2. 这样做到好处,可以高效率,毕竟dom 重排代价很高的。

  3. 这里还在 组件销毁的时候去除全局 订阅的事件(这都是细节的问题)


分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/293.html

分享给朋友:

“window onresize事件注意一下效率问题” 的相关文章

SVN Skipped 'xxx' -- Node remains in conflict 错误的解决办法

svn提交发现错误#cd /home/svn/app/# svn upUpdating '.':Skipped 'xxx' -- Node remains in conflictAt revision 1054.Summary of conflicts: ...

解决在微信内分享第三方链接标题、图片、摘要、链接等问题

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> var imgUrl = docum...

Mysql 触发器使用(含navicat使用案例)

Mysql 触发器使用(含navicat使用案例)

CREATE TRIGGER updateutime2 BEFORE UPDATE on yp_cms_score for EACH ROW BEGIN  SET NEW.utime= ...

RSA密钥的生成与配置(支付宝公私密钥可用)

RSA密钥的生成与配置(支付宝公私密钥可用)

RSA密钥的生成与配置openssl下载地址http://dldx.csdn.net/fd.php?i=20313208579480&s=ac2e809e168f7d5b8bf1515d3d6b1aa4,或者官方下载通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下...

JQ 获取验证码倒计时方法

JQ 获取验证码倒计时方法

html: <a href="javascript:;" class="weui_btn weui_btn_mini weui_btn_default"  id="show-not...

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

最近在做微信支付,帮客户部署好环境后,测试微信支付,发现点击支付后老是提示:get_brand_wcpay_request:fail,于是找到代码中调用微信支付的代码段:WeixinJSBridge.invoke('getBrandWCPayRequest', { &nb...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。