- 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