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