国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue實現前進刷新后退不刷新效果

2024-05-06 15:22:21
字體:
來源:轉載
供稿:網友

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

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

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

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

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

首先我給這三個界面路由的 path 設置了嚴格的層級關系 ,并設置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 包起來,就能實現時前進刷新,后退時不刷新的效果了。

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

總結

以上所述是小編給大家介紹的vue實現前進刷新后退不刷新效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 拜泉县| 财经| 济源市| 武宁县| 靖西县| 江城| 北票市| 沂水县| 邹城市| 班戈县| 宜君县| 南投县| 荥阳市| 寻甸| 桑日县| 湘西| 莆田市| 静宁县| 乌拉特中旗| 庆云县| 湘潭县| 电白县| 通山县| 广水市| 中卫市| 炎陵县| 南通市| 惠水县| 卢湾区| 霸州市| 马山县| 嘉祥县| 同德县| 鸡西市| 高密市| 新安县| 石泉县| 邯郸市| 浮梁县| 辽源市| 郸城县|