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

vue 頁面回退mounted函數(shù)不執(zhí)行的解決方案

 更新時(shí)間:2020年07月26日 09:37:32   作者:_花小七  
這篇文章主要介紹了vue 頁面回退mounted函數(shù)不執(zhí)行的解決方案 ,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言

最近做項(xiàng)目碰到一個(gè)很頭大的問題--從a頁面跳到b頁面進(jìn)行編輯,編輯完再返回a頁面,卻沒走a頁面的鉤子函數(shù)mounted,數(shù)據(jù)沒有更新

經(jīng)過一番面向百度研究,終于找到了問題所在。接下來就記錄一下這個(gè)問題及其解決的方法。

原理

其實(shí)這個(gè)問題主要涉及到vue生命周期,對vue生命周期理解不夠深刻的同學(xué)可以去官網(wǎng)學(xué)習(xí)一下:https://vuejs.org/v2/api/#Options-Lifecycle-Hooks

解決這個(gè)問題的關(guān)鍵就在于對keep-alive的理解和activated鉤子函數(shù)的使用。

當(dāng)在項(xiàng)目中引入keep-alive的時(shí)候,頁面第一次進(jìn)入,鉤子函數(shù)的觸發(fā)順序created -> mounted -> activated,退出時(shí)觸發(fā)deactivated。當(dāng)再次進(jìn)入(前進(jìn)或者后退)時(shí),只觸發(fā)activated。

我們知道 keep-alive 之后,頁面模板第一次初始化解析變成HTML片段后,再次進(jìn)入就不再重新解析而是讀取內(nèi)存中的數(shù)據(jù),即,只有當(dāng)數(shù)據(jù)變化時(shí),才使用VirtualDOM進(jìn)行diff更新。故,頁面進(jìn)入的數(shù)據(jù)獲取應(yīng)該在activated中也放一份。數(shù)據(jù)加載完畢手動(dòng)操作DOM的部分也應(yīng)該在activated中執(zhí)行才會生效。

所以,應(yīng)該activated中留一份數(shù)據(jù)獲取的代碼,或者不要created部分,直接將created中的代碼轉(zhuǎn)移到activated中。

html結(jié)構(gòu)

js部分--vue生命周期

  beforeCreate () {
    console.log('在實(shí)例初始化之前調(diào)用')
  }
  created () {
    console.log('在實(shí)例初始化之后調(diào)用,經(jīng)常用于操作數(shù)據(jù),發(fā)起ajax請求')
  }
  beforeMount () {
    console.log('在掛載開始之前被調(diào)用,如果是在服務(wù)器端渲染時(shí)不被調(diào)用;在這個(gè)函數(shù)里,無法獲取元素')
  }
 
  mounted () {
    console.log('在掛載后被調(diào)用,也不能在服務(wù)器端渲染時(shí)被調(diào)用;這個(gè)函數(shù)里,是可以獲取元素,并進(jìn)行操作的')
  }
  beforeUpdate () {
    console.log('視圖層數(shù)據(jù)更新前調(diào)用,發(fā)生在虛擬 DOM 打補(bǔ)丁之前。這里適合在更新之前訪問現(xiàn)有的 DOM')
  }
  updated () {
    console.log('視圖層數(shù)據(jù)更新后調(diào)用')
  }
  beforeDestroy () {
    console.log('實(shí)例銷毀之前調(diào)用,在被銷毀的組件中進(jìn)行調(diào)用;有一些操作,會在實(shí)例已經(jīng)銷毀的時(shí)候還在運(yùn)行,這時(shí)候?yàn)榱诵阅芸紤],就在這里結(jié)束哪些操作')
  }
  destroyed () {
    console.log('實(shí)例銷毀后調(diào)用。')
  }

activated和deactivated配合keep-alive標(biāo)簽使用!

activated () {
console.log('實(shí)例被激活時(shí)使用,用于重復(fù)激活一個(gè)實(shí)例的時(shí)候')
}
deactivated () {
console.log('實(shí)例沒有被激活時(shí)')
}

總結(jié)

keep-alive是Vue的內(nèi)置組件,能在組件切換過程中將狀態(tài)保留在內(nèi)存中,防止重復(fù)渲染DOM;導(dǎo)致在組件mounted鉤子中調(diào)用的刷新頁面內(nèi)容時(shí),這個(gè)鉤子沒有被調(diào)用。

故:使用Vue組件切換過程,執(zhí)行鉤子activated(keep-alive組件激活時(shí)調(diào)用),而不是掛載鉤子mounted。

補(bǔ)充知識:vue 子組件 created 方法不執(zhí)行問題

近期做了一個(gè)項(xiàng)目 里面有一個(gè)樹形菜單,將數(shù)據(jù)寫在 js (死數(shù)據(jù))中,所有的東西都能夠正常執(zhí)行(i 標(biāo)簽,子節(jié)點(diǎn),父節(jié)點(diǎn)),但是當(dāng)在請求接口文件或者請求后臺數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)引入的子組件的created方法不執(zhí)行,但是點(diǎn)擊父級菜單展開時(shí)還是能夠觸發(fā),后來發(fā)現(xiàn) 是生命周期的問題,仔細(xì)查看一下,后來解決 解決方法如下:用watch 檢測一下data的數(shù)據(jù)變化,created方法既然在點(diǎn)擊的時(shí)候執(zhí)行,所以也必須保留,好啦,就這樣

以上這篇vue 頁面回退mounted函數(shù)不執(zhí)行的解決方案就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 配置vue全局方法的兩種方式實(shí)例

    配置vue全局方法的兩種方式實(shí)例

    vue項(xiàng)目中有一些方法需要在多個(gè)頁面調(diào)用,但為了避免在每個(gè)頁面都import進(jìn)來,可以把方法加到原型上去,這樣在每個(gè)組件中都能使用了,下面這篇文章主要給大家介紹了關(guān)于配置vue全局方法的兩種方式,需要的朋友可以參考下
    2021-09-09
  • vue修改Element的el-table樣式的4種方法

    vue修改Element的el-table樣式的4種方法

    這篇文章主要介紹了vue修改Element的el-table樣式的4種方法,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-09-09
  • vue簡單練習(xí) 桌面時(shí)鐘的實(shí)現(xiàn)代碼實(shí)例

    vue簡單練習(xí) 桌面時(shí)鐘的實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了vue簡單練習(xí) 桌面時(shí)鐘的實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值的相關(guān)資料,需要的朋友可以參考下
    2019-09-09
  • ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié))

    ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié))

    這篇文章主要介紹了ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue el-table復(fù)選框全部勾選及勾選回顯功能實(shí)現(xiàn)

    Vue el-table復(fù)選框全部勾選及勾選回顯功能實(shí)現(xiàn)

    這篇文章主要介紹了Vue el-table復(fù)選框全部勾選及勾選回顯功能實(shí)現(xiàn),本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • el-table表頭添加勾選框的實(shí)現(xiàn)示例

    el-table表頭添加勾選框的實(shí)現(xiàn)示例

    本文主要介紹了el-table表頭添加勾選框的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Vue中v-for的數(shù)據(jù)分組實(shí)例

    Vue中v-for的數(shù)據(jù)分組實(shí)例

    下面小編就為大家分享一篇Vue中v-for的數(shù)據(jù)分組實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue添加錨點(diǎn),實(shí)現(xiàn)滾動(dòng)頁面時(shí)錨點(diǎn)添加相應(yīng)的class操作

    vue添加錨點(diǎn),實(shí)現(xiàn)滾動(dòng)頁面時(shí)錨點(diǎn)添加相應(yīng)的class操作

    這篇文章主要介紹了vue添加錨點(diǎn),實(shí)現(xiàn)滾動(dòng)頁面時(shí)錨點(diǎn)添加相應(yīng)的class操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 一文帶你理解 Vue 中的生命周期

    一文帶你理解 Vue 中的生命周期

    在我們實(shí)際項(xiàng)目開發(fā)過程中,會非常頻繁地和 Vue 組件的生命周期打交道,接下來我們就從源碼的角度來看一下這些生命周期的鉤子函數(shù)是如何被執(zhí)行的,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • 簡單談?wù)刅ue中的diff算法

    簡單談?wù)刅ue中的diff算法

    diff算法的本質(zhì)是找出兩個(gè)對象之間的差異,目的是盡可能復(fù)用節(jié)點(diǎn)。,下面這篇文章主要給大家介紹了關(guān)于Vue中diff算法的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評論

宁化县| 仲巴县| 潢川县| 田林县| 肥西县| 林州市| 靖边县| 九江县| 东台市| 老河口市| 汉源县| 孙吴县| 伊金霍洛旗| 满洲里市| 顺义区| 盐池县| 额敏县| 苏尼特右旗| 和硕县| 固阳县| 海原县| 泽州县| 双桥区| 福建省| 乌什县| 蓬安县| 思茅市| 治多县| 昭苏县| 新建县| 黔西| 监利县| 上饶市| 财经| 探索| 德化县| 文山县| 印江| 建湖县| 长丰县| 永德县|