很多时候列表页跳内页啥的,跳来返回都需要把前一页的数据缓存了
我们之前用的文案是keep-alive
但keep-alive有个问题是,三级菜单就会有奇奇怪怪的问题
清除也没办法
后面用了一个插件navigation。
<navigation>
<router-view></router-view>
</navigation>
可以做到a跳b,b跳去a,a页面是缓存 a跳去b,b是新开,b跳去c,b被缓存这种
但有时候我们又不需要缓存,
在不需要缓存的页面加上
this.$navigation.cleanRoutes()
然后我们在内页要做返回的判断,也被缓存了
beforeRouteEnter(to, from, next) {
next(vm => {
// console.log(to, '组件独享守卫beforeRouteEnter第一个参数')
if (vm.$route.query.type && vm.$route.query.type === 'post') {
vm.back = 1
vm.setDetail()
}
// 因为当钩子执行前,组件实例还没被创建
// vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
console.log(vm) // 当前组件的实例
})
},