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