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

vue實現(xiàn)前進刷新后退不刷新效果

 更新時間:2018年01月26日 09:08:46   作者:iceuncle  
這篇文章主要介紹了vue實現(xiàn)前進刷新,后退不刷新效果,即加載過的界面能緩存起來(返回不用重新加載),關(guān)閉的界面能被銷毀掉(再進入時重新加載)。本文給大家分享實現(xiàn)思路,需要的朋友可以參考下

最近在用vue嘗試著做移動端的項目。希望實現(xiàn)前進刷新、后退不刷新的效果。即加載過的界面能緩存起來(返回不用重新加載),關(guān)閉的界面能被銷毀掉(再進入時重新加載)。例如對a->b->c 前進(b,c)刷新,c->b->a 后退(b,a)不刷新。

由于 keep-alive 會把所有加載的過的界面都緩存起來,沒法實現(xiàn)返回時將界面銷毀掉,導(dǎo)致再進入時沒有重新加載這個界面。于是首先想到的方案是在點擊界面上返回按鈕的時候,調(diào)用 this.$destroy(true) 來將界面銷毀掉。但是在移動端 android設(shè)備上會有物理返回鍵,如果通過物理返回鍵返回的話,就沒法處理了。雖然可以重寫android的返回事件,來調(diào)用js的方法,但是調(diào)用的是js的全局方法,沒法具體讓在最上層的那個界面銷毀掉。

于是就需要另辟蹊徑了。還好這篇文章給了我啟發(fā) vue-router 之 keep-alive ,多謝作者的分享。

要是能夠知道路由是前進還是后退就好了,這樣的話我就能在后退的時候讓 from 路由的 keepAlive 置為 false , to 路由的 keepAlive 置為 ture ,就能在再次前進時,重新加載之前這個 keepAlive 被置為 false 的路由了。

廢話不多說了,這里模擬有三個界面 login 到 server 到 main 。

首先我給這三個界面路由的 path 設(shè)置了嚴格的層級關(guān)系 ,并設(shè)置keepAlive都是true,默認都是需要緩存。

const router = new Router({
 routes: [
  {
   path: '/',
   redirect: '/login'
  },
  {
   path: '/login',
   component: Login,
   meta: {
    keepAlive: true
   }
  },
  {
   path: '/login/server',
   component: ServerList,
   meta: {
    keepAlive: true
   }
  },
  {
   path: '/login/server/main',
   component: Main,
   meta: {
    keepAlive: true
   }
  }
 ]
})

由于這三個界面path的層級不同,我就能通過 beforeEach 這個鉤子判斷出什么時候是后退了。在后退時將 from 路由的 keepAlive 置為 false , to 路由的 keepAlive 置為 ture 。

router.beforeEach((to, from, next) => {
 const toDepth = to.path.split('/').length
 const fromDepth = from.path.split('/').length
 if (toDepth < fromDepth) {
  console.log('后退。。。')
  from.meta.keepAlive = false
  to.meta.keepAlive = true
 }
 next()
})

最后需要緩存的界面用 keep-alive 包起來,就能實現(xiàn)時前進刷新,后退時不刷新的效果了。

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

總結(jié)

以上所述是小編給大家介紹的vue實現(xiàn)前進刷新后退不刷新效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue3使用el-upload上傳文件示例詳解

    vue3使用el-upload上傳文件示例詳解

    這篇文章主要為大家介紹了vue3使用el-upload上傳文件實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • vue3項目新用戶引導(dǎo)組件driver.js示例詳解

    vue3項目新用戶引導(dǎo)組件driver.js示例詳解

    好用的用戶引導(dǎo)插件有?intro.js?和?driver.js?兩個,對比了一下,最終還是使用了driver.js,這篇文章主要介紹了vue3項目新用戶引導(dǎo)組件(driver.js),需要的朋友可以參考下
    2022-08-08
  • element-ui直接在表格中點擊單元格編輯

    element-ui直接在表格中點擊單元格編輯

    最近通過在網(wǎng)上查找資料,自己整合研究了一個可以直接在表格中操作數(shù)據(jù)的基于element-ui的前端模板。可以讓增改數(shù)據(jù)的操作顯得方便一點,感興趣的可以了解一下
    2021-12-12
  • Vue實現(xiàn)可移動水平時間軸

    Vue實現(xiàn)可移動水平時間軸

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)可移動水平時間軸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Vue初始化中的選項合并之initInternalComponent詳解

    Vue初始化中的選項合并之initInternalComponent詳解

    這篇文章主要介紹了Vue初始化中的選項合并之initInternalComponent的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • vue監(jiān)聽路由變化的幾種方式小結(jié)

    vue監(jiān)聽路由變化的幾種方式小結(jié)

    這篇文章主要介紹了vue監(jiān)聽路由變化的幾種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 在vue中實現(xiàn)嵌套頁面(iframe)

    在vue中實現(xiàn)嵌套頁面(iframe)

    這篇文章主要介紹了在vue中實現(xiàn)嵌套頁面(iframe),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue3中echarts無法縮放的問題及解決方案

    Vue3中echarts無法縮放的問題及解決方案

    很多朋友在使用vue3+echarts5技術(shù)時會遇到echarts無法綻放的問題,今天小編就給大家分享下問題描述及解決方案,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 如何寫一個 Vue3 的自定義指令

    如何寫一個 Vue3 的自定義指令

    這篇文章主要介紹了如何寫一個 Vue3 的自定義指令,如果我們想在 Vue.js 的項目中實現(xiàn)圖片懶加載,那么用自定義指令就再合適不過了,那么接下來就讓我手把手帶你用 Vue3 去實現(xiàn)一個圖片懶加載的自定義指令 v-lazy,需要的朋友可以參考一下
    2022-01-01
  • element-plus 如何設(shè)置 el-date-picker 彈出框位置

    element-plus 如何設(shè)置 el-date-picker 彈出框位置

    el-date-picker 組件會自動根據(jù)空間范圍進行選擇比較好的彈出位置,但特定情況下,它自動計算出的彈出位置并不符合我們的實際需求,故需要我們手動設(shè)置,這篇文章主要介紹了element-plus 如何設(shè)置 el-date-picker 彈出框位置,需要的朋友可以參考下
    2024-07-07

最新評論