亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

解決vue 給window添加和移除resize事件遇到的坑

瀏覽:111日期:2022-12-31 18:16:27

在vue項目中需要監聽window窗口變化來時時計算圖片的高度,于是就加了一個監聽事件;確實監聽到了,但是在離開當前頁面進入其他頁面改變窗口大小時發現window還是處于監聽狀態,即移除監聽事件并沒有生效。

//之前的寫法,這樣寫移除監聽事件無效 mounted(){ window.addEventListener(’resize’,()=>{ ’改變窗口大小時需要做的處理’ }); }, beforeDestroy() { window.removeEventListener('resize'); }

后來查找相關資料后發現用下面這種寫法可以移除監聽

methods: { listenResize(){ ’窗口大小改變時的操作’ } }, mounted(){ window.addEventListener(’resize’,this.listenResize); }, beforeDestroy() { window.removeEventListener('resize',this.listenResize); }

補充知識:vue 監聽屏幕變化 & 銷毀監聽事件

記一次小坑.

由于用到 echarts 需要自適應屏幕,所以在vue中用了監聽事件并且考慮到性能問題,所以用lodash 庫的 debounce 做了包裹.代碼如下:

mounted() { window.addEventListener(’resize’, debounce(this.resize,200), true)},beforeDestroy() { window.removeEventListener(’resize’, this.resize, true)},methods: { resize() { this.radarChart.resize() }}

然而發現切換到其他的頁面的時候,屏幕改變的時候還是會觸發 resize 事件,因為之前寫過類似功能,代碼是沒有問題的,但是就是會觸發,心里也是覺得奇怪,研究了一下,發現 addEventListener 的方法里面不加 debounce 就可以了.如下:

mounted() { window.addEventListener(’resize’, this.resize, true)},beforeDestroy() { window.removeEventListener(’resize’, this.resize, true)},methods: { resize: debounce(function() { this.radarChart.resize() }, 300), }

debounce 需要加在 methods 里面.并且內部函數體不能使用箭頭函數,否則會報 this undefined 的問題

以上這篇解決vue 給window添加和移除resize事件遇到的坑就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 国产日产亚洲系列首页 | 国产精品夜夜春夜夜爽久久 | 成人伦理影院 | 亚洲一区亚洲二区 | 欧美日韩国产一区二区三区在线观看 | 在线观看国产欧美 | 在线爱爱视频 | 国产日本一区二区三区 | 亚洲精品日韩一区二区 | 国产三级在线观看 | 日韩在线视频一区 | 国产亚洲精品视频中文字幕 | 亚洲欧美日韩一区超高清 | 欧美成人777 | 亚洲欧美综合色区小说 | 色综合久久久久久久久五月性色 | 久久99九九精品免费 | 日韩在线不卡 | 日本不卡毛片一二三四 | 你懂得在线网址 | 任我爽在线视频精品凹凸精品分类 | 九九热视频在线免费观看 | 一级黄色影院 | 毛片最新网址 | 青草视频污 | 黄色一级视频片 | 欧美肥老妇做爰视频 | 久久国产精品久久久久久久久久 | 国产成人香蕉在线视频fuz | 亚洲三级免费 | 日韩精品一区二三区中文 | 亚洲精品97福利在线 | 久久天天躁狠狠躁夜夜爽蜜月 | 欧美日韩国产精品自在自线 | 日本免费黄色网 | 国产精品国产三级在线高清观看 | 新黄色网址 | 国产123| 日韩欧美卡一卡二卡新区 | 欧美午夜理伦三级在线观看 | 国产一级爱c片免费观看 |