vue關(guān)于點擊詳情頁面keep-alive的緩存問題
點擊詳情頁面keep-alive的緩存問題
今天有個列表
點擊以后 進入詳情 然后在返回,再點擊其他的列表數(shù)據(jù),詳情頁面請求的還是上一次請求的id 除非刷新才會請求現(xiàn)在的.
這樣子對用戶體驗感是非常不好滴,查了半天資料 發(fā)現(xiàn)了activated這個api
解決有些不需要被緩存的組件頁面 設(shè)置 activated 即可以再次進行事件的響應(yīng)
vue中路由表單緩存(keep-alive)
vue 中從一個路由切換到另一個路由的時候,第一個路由可能有表單信息,但切換到第二個路由時,第一個路由里的組件會被銷毀,表單里填寫的 value 也會消失,keep-alive 就可以幫我們緩存我們不想被銷毀的組件。
頁面效果
父組件代碼
<!-- 如果沒有 include 屬性,那么就會緩存全部子路由組件,這樣做是沒有必要的,只緩存表單組件即可 --> <keep-alive include='News‘> <!-- 緩存多個組件的寫法 --> <!-- <keep-alive :include=['News','Massage']> --> <router-view></router-view> </keep-alive>
被緩存組件代碼
<template> <ul> <li>news001 <input type='text'></li> <li>news002 <input type='text'></li> <li>news003 <input type='text'></li> </ul> </template>
<script> export default { name: "News", }; </script>
那么問題來了,如果在緩存組件開一個定時器,那么切換到其他組件定時器永遠不會被銷毀,這樣運行效率會很低,那么這時候我們需要兩個新的生命周期函數(shù) activated 與 deactivated
<script> export default { name:'News', data(){ return { count:0, } }, activated(){ this.timer = setInterval(()=>{ this.count++ },20) }, deactivated(){ clearInterval(this.timer) } } </script>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
移動端滑動切換組件封裝 vue-swiper-router實例詳解
這篇文章主要介紹了移動端滑動切換組件封裝 vue-swiper-router實例詳解,需要的朋友可以參考下2018-11-11安裝@vue/cli報錯npmERR gyp ERR問題及解決
這篇文章主要介紹了安裝@vue/cli報錯npmERR gyp ERR問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08Vue+axios+WebApi+NPOI導(dǎo)出Excel文件實例方法
在本篇文章里小編給大家整理關(guān)于Vue+axios+WebApi+NPOI導(dǎo)出Excel文件的知識點以及實例代碼,需要的朋友們參考下。2019-06-06Vue單頁面應(yīng)用保證F5強刷不清空數(shù)據(jù)的解決方案
最近小編遇到這樣的問題當vue單頁面按F5強刷,數(shù)據(jù)就恢復(fù)初始了,這怎么辦呢?下面小編給大家?guī)砹薞ue單頁面應(yīng)用保證F5強刷不清空數(shù)據(jù)的解決方案,感興趣的朋友一起看看吧2018-01-01