4.vue keep-alive實現前進刷新后退不刷新


  • App.vue 中meta對象的屬性控制是否展示

 

1 <keep-alive> 
2  <router-view v-if="$route.meta.keepAlive"></router-view> 
3  </keep-alive> 
4 <router-view v-if="!$route.meta.keepAlive"></router-view>

 

 

 

  • router.js中,給需要不刷新的頁面路由添加meta字段
1     path: 'homeInfo',
2     name: 'HomeInfo',
3     component: () => import('@/views/home/index'),
4     meta: {
5       title: '列表頁',
6       keepAlive: true, // 判斷是否需要緩存
7       isBack: false // 判斷是否為返回操作
8     }
  • 在對應的組件中
 1 activated() {
 2     if (!this.$route.meta.isBack) {
 3       // 操作,從其他頁面進入時,可以操作恢復默認狀態、請求接口。。。
 4       // 頁碼重置查詢
 5  
 6     } else {
 7       // 詳情頁返回操作,比如頁面位置
 8       //  頁碼不重置
 9    
10     }
11   },
12   beforeRouteEnter(to, from, next) {
13     if (from.name === 'HomeInfo' ) {
14       to.meta.isBack = true
15     } else {
16       to.meta.isBack = false
17     }
18     next()
19   }
  • 注意:進入已經緩存的頁面時,第一次進入,觸發鈎子created-> mounted-> activated,退出時觸發deactivated。再次進入時,只觸發activated


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM