最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年07月21日 15:29:50   作者:qq_43561241  
這篇文章主要介紹了解決vue 給window添加和移除resize事件遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

后來查找相關(guān)資料后發(fā)現(xiàn)用下面這種寫法可以移除監(jiān)聽

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

補充知識:vue 監(jiān)聽屏幕變化 & 銷毀監(jiān)聽事件

記一次小坑.

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

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

然而發(fā)現(xiàn)切換到其他的頁面的時候,屏幕改變的時候還是會觸發(fā) resize 事件,因為之前寫過類似功能,代碼是沒有問題的,但是就是會觸發(fā),心里也是覺得奇怪,研究了一下,發(fā)現(xiàn) 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 里面.并且內(nèi)部函數(shù)體不能使用箭頭函數(shù),否則會報 this undefined 的問題

以上這篇解決vue 給window添加和移除resize事件遇到的坑就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue el-switch綁定數(shù)值時需要注意的問題

    vue el-switch綁定數(shù)值時需要注意的問題

    在Vue中使用`el-switch`組件時,綁定數(shù)值類型時應(yīng)使用布爾值(true/false),而綁定字符串類型時應(yīng)使用字符串('true'/'false')
    2024-12-12
  • Vue3?在<script?setup>里設(shè)置組件name屬性的方法

    Vue3?在<script?setup>里設(shè)置組件name屬性的方法

    這篇文章主要介紹了Vue3?在<script?setup>里設(shè)置組件name屬性的方法,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-11-11
  • vue-cli3搭建項目的詳細步驟

    vue-cli3搭建項目的詳細步驟

    這篇文章主要介紹了vue-cli3搭建項目的詳細步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue.js仿hover效果的實現(xiàn)方法示例

    vue.js仿hover效果的實現(xiàn)方法示例

    這篇文章主要介紹了vue.js仿hover效果的實現(xiàn)方法,結(jié)合實例形式分析了vue.js事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-01-01
  • vue中modal傳輸數(shù)據(jù)并刷新部分頁面數(shù)據(jù)方式

    vue中modal傳輸數(shù)據(jù)并刷新部分頁面數(shù)據(jù)方式

    這篇文章主要介紹了vue中modal傳輸數(shù)據(jù)并刷新部分頁面數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue提示框組件vue-notification使用詳解

    Vue提示框組件vue-notification使用詳解

    這篇文章主要介紹了Vue提示框組件vue-notification使用詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • el-table表頭全選框隱藏或禁用設(shè)置方法

    el-table表頭全選框隱藏或禁用設(shè)置方法

    有時候我們使用el-table的選擇框時,如果涉及修改、刪除時,可能一次只允許用戶選擇一條,這樣的話如果使用頂部的全選復(fù)選框就不合適了,這篇文章主要給大家介紹了關(guān)于el-table表頭全選框隱藏或禁用設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • vue如何實現(xiàn)未登錄不能訪問某些頁面

    vue如何實現(xiàn)未登錄不能訪問某些頁面

    這篇文章主要介紹了vue如何實現(xiàn)未登錄不能訪問某些頁面問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù))

    vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù))

    這篇文章主要介紹了vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • VUE3中的函數(shù)的聲明和使用

    VUE3中的函數(shù)的聲明和使用

    這篇文章主要介紹了VUE3中的函數(shù)的聲明和使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

吉水县| 彭州市| 息烽县| 呼图壁县| 诸暨市| 体育| 武胜县| 肥西县| 华亭县| 宁陵县| 南溪县| 黔东| 扎鲁特旗| 通州市| 陆川县| 重庆市| 轮台县| 观塘区| 通州区| 东城区| 丰台区| 肇庆市| 新乡县| 东源县| 临沂市| 娄底市| 古田县| 民和| 台东市| 会泽县| 玉溪市| 金坛市| 屯门区| 登封市| 永德县| 黄骅市| 乌鲁木齐市| 冕宁县| 沂水县| 南岸区| 那曲县|