原莱_ 2022-10-22 11:01 采纳率: 75%
浏览 65
已结题

页面子组件keepAlive未生效

页面子组件keepAlive未生效

<router-view v-slot="{ Component }">
        <keep-alive>
          <component
            :is="Component"
            v-if="$route.meta.keepAlive"
            :key="$route.name"
          />
        </keep-alive>
        <component
          :is="Component"
          v-if="!$route.meta.keepAlive"
          :key="$route.name"
        />
</router-view>

keepAlive为true的页面,路由index.vue

<Tabs>
    <TabPane>
      <com1/>
    </TabPane>
    <TabPane>
      <com2/>
    </TabPane>
    <TabPane>
      <com3/>
    </TabPane>
</Tabs>

问题
切换index和其他页面时有缓存,
在切换tab的时候,路由会切换成index?tab=1/2/3
在页面内切换tab的时候tab之间没有缓存
目的
切换tab的时候,各tab组件之间有缓存

  • 写回答

1条回答 默认 最新

  • Iam_楠 新星创作者: 前端开发技术领域 2022-10-22 16:18
    关注

    组件有渲染吗?
    v-if 这么用可能会导致组件不渲染,就是v-if不生效,带来的副作用可能导致 keep-alive没有生效;
    像下面这么写试一下

    v-if="$route.meta.keepAlive === true"
    v-else
    ```javascript
    
    
    
    

    ```

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月26日
  • 修改了问题 10月22日
  • 修改了问题 10月22日
  • 创建了问题 10月22日