keep-alive条件缓存

页面一共为三页,A、B、C
A>B不缓存,C>B需要缓存
在网上查阅之后写了

在路由里面加上了
    {
      path: '/b',
      name: 'B',
      component: B,
      meta:{
        keepAlive:true
      }
    }
    
   
 在app.vue写了

 <keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
 </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
    
  A页面写了
 beforeRouteLeave(to, from, next) {
    to.meta.keepAlive = false;
    next();
  }
C页面写了
beforeRouteLeave(to, from, next) {
    to.meta.keepAlive = true;
    next();
  }  

然后存在问题
1.从A到B再到C,之后从C返回,B没被缓存
2.从B到A,之后到B,B没被缓存,表现正常,之后点击C,这个时候从C返回,得到的是一开始B的缓存

求大神看看是哪有问题,今天就处理这个问题了,但是现在还没什么头绪

阅读 2.5k
2 个回答

别用v-if控制缓存不缓存了。。按官网上的方法:

 <keep-alive :include='cacheGroup'>
    <router-view></router-view>
 </keep-alive>
 

cacheGroup是个数组,要缓存的组件的name放进这个数组就行,不想缓存就把它从数组移除

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题