关于动态使用keepAlive不生效的问题

首先,我想实现在返回页面时,页面不进行刷新,比如我原先选择的第四页,返回后显示了第一页

想到使用keepAlive缓存组件,大部分推荐的方法为这样,但是不生效

<keep-alive v-if="$route.meta.keepAlive">
        <router-view  />
</keep-alive>
<router-view v-else />

正确的使用方法 

 <keep-alive>
        <router-view v-if="$route.meta.keepAlive" />
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive" />

原因

通过v-if来判断是否生成keep-alive,当列表页面符合条件时,内存缓存了组件状态。当跳转到详情页时,不符合条件,由于v-if是挂载到keep-alive标签上,会把之前keep-alive的列表页面进行销毁,再次进入到列表会重新创建 

 

posted @ 2024-04-01 11:25  blackAge  阅读(480)  评论(0)    收藏  举报