欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue?keepAlive實(shí)現(xiàn)不同的路由共用一個(gè)組件component的緩存問題(推薦)

 更新時(shí)間:2022年08月25日 10:08:57   作者:代碼修整工  
這篇文章主要介紹了Vue?keepAlive實(shí)現(xiàn)不同的路由共用一個(gè)組件component的緩存問題,實(shí)現(xiàn)方式使用Vue?keepAlive實(shí)現(xiàn)頁(yè)面緩存,需要的朋友可以參考下

不同的路由共用一個(gè)組件component,并用keepAlive實(shí)現(xiàn)不同的頁(yè)面緩存

實(shí)現(xiàn)功能:使用列表頁(yè)面檢索的數(shù)據(jù)跳轉(zhuǎn)到對(duì)應(yīng)的詳情頁(yè)面,從詳情頁(yè)回到列表頁(yè)能記住上次檢索的數(shù)據(jù),再次切換到詳情頁(yè)時(shí)能正常取到對(duì)應(yīng)的數(shù)據(jù)

實(shí)現(xiàn)方式使用Vue keepAlive實(shí)現(xiàn)頁(yè)面緩存,整理了一些資料和其他的博客在這里記錄一下。。。。

keepAlive原理:

1,保留組件的狀態(tài),在重新進(jìn)入頁(yè)面時(shí)避免重新渲染。
2、是抽象組件,它自身不會(huì)渲染DOM元素,也不會(huì)出現(xiàn)在父組件鏈中。
3、當(dāng)組件在 內(nèi)被切換,它的 activated 和 deactivated 這兩個(gè)生命周期鉤子函數(shù)將會(huì)被對(duì)應(yīng)執(zhí)行。

實(shí)現(xiàn)

在app.vue中改寫router-view

<keep-alive :include="cachedViews" :exclude="disCachedViews">
    <router-view/>
  </keep-alive>

注意 cachedViews里面存的是由路由name構(gòu)成的數(shù)組,數(shù)組的name需與組件的name一致,否詞不能達(dá)到緩存的效果。
因?yàn)檫@里用的是動(dòng)態(tài)路由,組件的name不能根據(jù)路由動(dòng)態(tài)更改,所以用另外一種方式

<keep-alive>
      <router-view v-if="$route.meta.keepAlive" >
        <!-- 這里是會(huì)被緩存的視圖組件 -->
      </router-view>
    </keep-alive>

    <router-view v-if="!$route.meta.keepAlive" >
      <!-- 這里是不被緩存的視圖組件 -->
    </router-view>

在構(gòu)建路由時(shí)路由元信息meta加上屬性keepAlive,為true

這里已經(jīng)實(shí)現(xiàn)了頁(yè)面緩存的效果,及第一個(gè)功能檢索的列表頁(yè)面list.vue進(jìn)入到詳情i頁(yè)nfo.vue,再切換回到list.vue可以看到已檢索的數(shù)據(jù)列表。

2.打開一個(gè)新的詳情頁(yè),發(fā)現(xiàn)數(shù)據(jù)是上一次打開的頁(yè)面數(shù)據(jù),數(shù)據(jù)并沒有根據(jù)路由刷新

因?yàn)槲覀冞@里做了keepAlive緩存,重新進(jìn)入頁(yè)面并不會(huì)觸發(fā)created方法,而且詳情頁(yè)info.vue做了多路由復(fù)用同一個(gè)組件的情況,不能使用activated()去觸發(fā)。
解決這個(gè)問題必須解決路由復(fù)用問題,使用Vue-router做項(xiàng)目時(shí),會(huì)遇到如/info/:id這樣只改變id號(hào)的場(chǎng)景。由于router-view是復(fù)用的,單純的改變id號(hào)并不會(huì)刷新router-view

1.方法一:通過 watch 監(jiān)聽路由

watch: {
     '$route'(to, from) {
        if (to.path !== from.path) {
          console.log('檢測(cè)到路由變化')
          // 初始化數(shù)據(jù)
          this.initData()
        }
      }
    },

2.方法二:用 :key 來阻止“復(fù)用”

設(shè)置key為$route.fullPath之后,由于兩個(gè)路由的fullPath不同,組件會(huì)被強(qiáng)制不復(fù)用

<keep-alive>
      <router-view v-if="$route.meta.keepAlive" :key="$route.fullPath">
        <!-- 這里是會(huì)被緩存的視圖組件 -->
      </router-view>
    </keep-alive>

    <router-view v-if="!$route.meta.keepAlive" :key="$route.fullPath">
      <!-- 這里是不被緩存的視圖組件 -->
    </router-view>

3.方法三:通過 vue-router 的鉤子函數(shù) beforeRouteEnter beforeRouteUpdate beforeRouteLeave

beforeRouteEnter (to, from, next) {

 // 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用

 // 不!能!獲取組件實(shí)例 `this`

 // 因?yàn)楫?dāng)鉤子執(zhí)行前,組件實(shí)例還沒被創(chuàng)建

},
beforeRouteUpdate (to, from, next) {

 // 在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用

 // 舉例來說,對(duì)于一個(gè)帶有動(dòng)態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時(shí)候,

 // 由于會(huì)渲染同樣的 Foo 組件,因此組件實(shí)例會(huì)被復(fù)用。而這個(gè)鉤子就會(huì)在這個(gè)情況下被調(diào)用。

 // 可以訪問組件實(shí)例 `this`

},
beforeRouteLeave (to, from, next) {

 // 導(dǎo)航離開該組件的對(duì)應(yīng)路由時(shí)調(diào)用

 // 可以訪問組件實(shí)例 `this`

}

經(jīng)過實(shí)踐,方法二是比較好用的

到此這篇關(guān)于Vue keepAlive實(shí)現(xiàn)不同的路由共用一個(gè)組件component的緩存問題的文章就介紹到這了,更多相關(guān)Vue keepAlive組件緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue element-ui實(shí)現(xiàn)el-table表格多選以及回顯方式

    vue element-ui實(shí)現(xiàn)el-table表格多選以及回顯方式

    這篇文章主要介紹了vue element-ui實(shí)現(xiàn)el-table表格多選以及回顯方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue項(xiàng)目中常用的工具函數(shù)總結(jié)

    Vue項(xiàng)目中常用的工具函數(shù)總結(jié)

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中常用的工具函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Vue 中如何正確引入第三方模塊的方法步驟

    Vue 中如何正確引入第三方模塊的方法步驟

    這篇文章主要介紹了Vue 中如何正確引入第三方模塊的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Vue入門實(shí)戰(zhàn)之天氣預(yù)報(bào)

    Vue入門實(shí)戰(zhàn)之天氣預(yù)報(bào)

    這篇文章主要為大家詳細(xì)介紹了Vue入門實(shí)戰(zhàn)之天氣預(yù)報(bào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue+echarts+datav大屏數(shù)據(jù)展示及實(shí)現(xiàn)中國(guó)地圖省市縣下鉆功能

    vue+echarts+datav大屏數(shù)據(jù)展示及實(shí)現(xiàn)中國(guó)地圖省市縣下鉆功能

    這篇文章主要介紹了vue+echarts+datav大屏數(shù)據(jù)展示及實(shí)現(xiàn)中國(guó)地圖省市縣下鉆,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于vue實(shí)現(xiàn)多引擎搜索及關(guān)鍵字提示

    基于vue實(shí)現(xiàn)多引擎搜索及關(guān)鍵字提示

    這篇文章主要為大家詳細(xì)介紹了基于vue實(shí)現(xiàn)多引擎搜索及關(guān)鍵字提示的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue在外部方法給下拉框賦值后不顯示label的解決

    vue在外部方法給下拉框賦值后不顯示label的解決

    這篇文章主要介紹了vue在外部方法給下拉框賦值后不顯示label的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue學(xué)習(xí)筆記進(jìn)階篇之過渡狀態(tài)詳解

    Vue學(xué)習(xí)筆記進(jìn)階篇之過渡狀態(tài)詳解

    本篇文章主要介紹了Vue學(xué)習(xí)筆記進(jìn)階篇之過渡狀態(tài)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue路由組件的緩存keep-alive和include屬性的具體使用

    Vue路由組件的緩存keep-alive和include屬性的具體使用

    :瀏覽器頁(yè)面在進(jìn)行切換時(shí),原有的路由組件會(huì)被銷毀,通過緩存可以保存被切換的路由組件,本文主要介紹了Vue路由組件的緩存keep-alive和include屬性的具體使用,感興趣的可以了解一下
    2023-11-11
  • Vue顯示圖片的幾種方式小結(jié)

    Vue顯示圖片的幾種方式小結(jié)

    本文主要介紹了Vue顯示圖片的幾種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論