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

VUE設(shè)置和清除定時器的方式及遇到的問題

 更新時間:2022年10月28日 11:20:45   作者:marsur  
?最近需要再頁面里做個倒計時,發(fā)現(xiàn)用clearInterval()清除定時器失效,下面這篇文章主要給大家介紹了關(guān)于VUE設(shè)置和清除定時器的方式及遇到的問題的相關(guān)資料,需要的朋友可以參考下

方法一、在生命周期函數(shù)beforeDestroy中清除 

data() {
    return {
      timer: null;
    };
},
created() {    
    // 設(shè)置定時器,5s執(zhí)行一次
    this.timer = setInterval(() => {
      console.log('setInterval');
    }, 5000);
}
beforeDestroy () {
    //清除定時器
    clearInterval(this.timer);
    this.timer = null;
}

方法二、使用hook:beforedestroy(推薦)

created() {    
    // 設(shè)置定時器,5s執(zhí)行一次
    let timer = setInterval(() => {
      console.log('setInterval');
    }, 5000);
 
    // 離開當(dāng)前頁面時銷毀定時器
    this.$once('hook:beforeDestroy', () => {
      clearInterval(timer);
      timer = null;
    })
}

該方法與在生命周期鉤子beforeDestroy中清除定時器的操作原理一樣,但更有優(yōu)勢

1.無需在vue實例上定義定時器,減少不必要的內(nèi)存浪費

2.設(shè)置和清除定時器的代碼放在一塊,可讀性維護(hù)性更好

三、beforeDestroy函數(shù)沒有觸發(fā)的情況

1、原因

<router-view>外層包裹了一層<keep-alive>

< keep-alive > 有緩存的作用,可以使被包裹的組件狀態(tài)維持不變,當(dāng)路由被 keep-alive 緩存時不走 beforeDestroy 生命周期。被包含在

< keep-alive > 中創(chuàng)建的組件,會多出兩個生命周期鉤子: activated 與 deactivated。

activated

在組件被激活時調(diào)用,在組件第一次渲染時也會被調(diào)用,之后每次keep-alive激活時被調(diào)用。

deactivated

在組件失活時調(diào)用。

2、解決方案

借助 activated 和 deactivated 鉤子來設(shè)置和清除定時器

(1)生命周期鉤子

created() {
    // 頁面激活時設(shè)置定時器
    this.$on("hook:activated", () => {
        let timer = setInterval(()=>{
          console.log("setInterval");
        },1000)
    })
 
    // 頁面失活時清除定時器
    this.$on("hook:deactivated", ()=>{
      clearInterval(timer);
      timer = null;
    })
  }

(2)hook

data() {
    return {
      timer: null // 定時器
    }
},
activated() {
    // 頁面激活時開啟定時器
    this.timer = setInterval(() => {
      console.log('setInterval');
    }, 5000)
},
deactivated() {
    // 頁面關(guān)閉(路由跳轉(zhuǎn))時清除定時器
    clearInterval(this.timer)
    this.timer = null
},

附:vue離開頁面銷毀定時器

vue 是單頁面應(yīng)用,路由切換后,定時器并不會自動關(guān)閉,需要手動清除,當(dāng)頁面被銷毀時,清除定時器即可。

data: {
? ? return {
? ? ? ? timer: null
? ? }
},
created() {
? ? this.timer = setInterval(....);
},
beforeDestroy() {
? ? if(this.timer) { //如果定時器還在運行 或者直接關(guān)閉,不用判斷
? ? ? ? clearInterval(this.timer); //關(guān)閉
? ? }
}

總結(jié)

到此這篇關(guān)于VUE設(shè)置和清除定時器的文章就介紹到這了,更多相關(guān)VUE設(shè)置和清除定時器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.Draggable實現(xiàn)交換位置

    Vue.Draggable實現(xiàn)交換位置

    這篇文章主要為大家詳細(xì)介紹了Vue.Draggable實現(xiàn)交換位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue路由切換的兩種方式示例詳解

    Vue路由切換的兩種方式示例詳解

    這篇文章主要介紹了Vue路由切換的兩種方式,主要包括標(biāo)簽切換和js切換,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue使用axios獲取不到響應(yīng)頭Content-Disposition的問題及解決

    vue使用axios獲取不到響應(yīng)頭Content-Disposition的問題及解決

    這篇文章主要介紹了vue使用axios獲取不到響應(yīng)頭Content-Disposition的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • VUE使用docxtemplater導(dǎo)出word文檔實例(帶圖片)

    VUE使用docxtemplater導(dǎo)出word文檔實例(帶圖片)

    docxtemplate支持的功能很多,語法包含變量替換、條件判斷、循環(huán)、列表循環(huán)、表格循環(huán)等,下面這篇文章主要給大家介紹了關(guān)于VUE使用docxtemplater導(dǎo)出word功能(帶圖片)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Vue 中使用 typescript的方法詳解

    Vue 中使用 typescript的方法詳解

    Typescript 5年內(nèi)的熱度隨時間變化的趨勢,整體呈現(xiàn)一個上升的趨勢。也說明ts越來越&#65039;受大家的關(guān)注了。這篇文章主要介紹了Vue 中使用 typescript的方法詳解,需要的朋友可以參考下
    2020-02-02
  • 使用echarts點擊按鈕從新渲染圖表并更新數(shù)據(jù)

    使用echarts點擊按鈕從新渲染圖表并更新數(shù)據(jù)

    這篇文章主要介紹了使用echarts點擊按鈕從新渲染圖表并更新數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue-cli的工程模板與構(gòu)建工具詳解

    vue-cli的工程模板與構(gòu)建工具詳解

    vue-cli提供的腳手架只是一個最基礎(chǔ)的,也可以說是Vue團(tuán)隊認(rèn)為的工程結(jié)構(gòu)的一種最佳實踐。這篇文章主要介紹了vue-cli的工程模板與構(gòu)建工具 ,需要的朋友可以參考下
    2018-09-09
  • vue axios 簡單封裝以及思考

    vue axios 簡單封裝以及思考

    axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端。這篇文章主要介紹了vue axios 簡單封裝以及思考 ,需要的朋友可以參考下
    2018-10-10
  • VUE2—defineProperty和VUE3—proxy使用方式

    VUE2—defineProperty和VUE3—proxy使用方式

    Vue2和Vue3的響應(yīng)式原理不同,Vue2使用Object.defineProperty,Vue3使用Proxy,Object.defineProperty可以監(jiān)聽某個屬性,但不能監(jiān)聽整個對象,且無法監(jiān)聽對象屬性的新增和刪除,Proxy可以監(jiān)聽整個對象,且不會修改原數(shù)據(jù),可以監(jiān)聽數(shù)組的長度變化
    2025-01-01
  • Vue實現(xiàn)菜單切換功能

    Vue實現(xiàn)菜單切換功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)菜單切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評論

墨玉县| 黔西| 无棣县| 道孚县| 洛南县| 兴义市| 雷州市| 固镇县| 山阴县| 岚皋县| 金塔县| 镇宁| 翁源县| 黔江区| 珲春市| 汉中市| 仁怀市| 潮安县| 即墨市| 岚皋县| 依兰县| 郸城县| 白河县| 鄂伦春自治旗| 德惠市| 六盘水市| 奉节县| 苗栗市| 上林县| 昭苏县| 四会市| 巴林左旗| 杨浦区| 梅州市| 常熟市| 清流县| 定远县| 冕宁县| 凤翔县| 祁连县| 安吉县|