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

vue子組件中使用window.onresize()只執(zhí)行一次問題

 更新時(shí)間:2024年08月10日 16:57:48   作者:小三金  
這篇文章主要介紹了vue子組件中使用window.onresize()只執(zhí)行一次問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

描述

做了個(gè)簡單的echarts組件,其中有個(gè)功能是當(dāng)窗口變化時(shí),刷新echarts。

用了window.onresize(),且用了防抖方法,但是一個(gè)頁面中會(huì)有多處用到echarts的組件,重點(diǎn)是當(dāng)將窗口拖拽時(shí),卻只執(zhí)行了一次。

window.onresize = () => {
                delay(function () {
                    //防抖重畫                    
                    _this.handleDispose()
                    _this.handleDraw()
                }, 500)
            }

解決方案

使用 window.addEventListener('resize',function(){})

window.addEventListener('resize', _this.handleReDraw)

區(qū)別:

  • window.addEventListener():為每個(gè)事件指定一個(gè)回調(diào)函數(shù)去處理,簡單說,以我這個(gè)組件為例,是為每個(gè)組件都指定了一個(gè)回調(diào)函數(shù)處理
  • window.onresize():是統(tǒng)一用一個(gè)回調(diào)去去處理,簡單說,N個(gè)子組件都用了一個(gè)同一個(gè)函數(shù)去處理,所以,只能最后一個(gè)子組件好用,因?yàn)楹笳吒采w了前面的方法

tips:

  • 根據(jù)你的業(yè)務(wù)邏輯,別忘了removeEventListener(),否則它會(huì)一直監(jiān)聽
  • 如果你的是后臺(tái)管理系統(tǒng),且有多頁tabs功能(開多頁功能),那么你要監(jiān)聽下route并做好除去監(jiān)聽方法,否則它也會(huì)一直監(jiān)聽

 watch: {
        options (newVal, oldVal) {
            let _this = this
            if (newVal) {
                _this.init()
            }
        },
        $route: {
            handler: function (route) {
                const _this = this

                if (route.name != "Index") {
                    //移除監(jiān)聽
                    window.removeEventListener('resize', _this.handleReDraw)
                } else {
                    //監(jiān)聽窗口變化
                    window.addEventListener('resize', _this.handleReDraw)
                }

            },
            immediate: true,
        },
    },

... 
// 頁面初始化
    created () { },
    // 頁面DOM加載完成
    mounted () {
        let _this = this
        _this.init()

        //監(jiān)聽窗口變化
        window.addEventListener('resize', _this.handleReDraw)

    },
    //離開頁面時(shí)執(zhí)行
    destroyed () {
        const _this = this

        //移除監(jiān)聽
        window.removeEventListener('resize', _this.handleReDraw)
    },
...

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

玉溪市| 民丰县| 邵阳市| 涿州市| 伽师县| 桐柏县| 开鲁县| 汉沽区| 逊克县| 扎赉特旗| 龙海市| 太谷县| 施甸县| 中方县| 开原市| 萨嘎县| 霍林郭勒市| 宣化县| 平原县| 长阳| 泰来县| 德江县| 太仓市| 兰考县| 洛南县| 长岭县| 淮安市| 砀山县| 崇明县| 邵武市| 临海市| 太康县| 平邑县| 罗平县| 宜黄县| 绥宁县| 罗山县| 五寨县| 定州市| 山阳县| 湘潭市|