parentComponent.ctx.deactivate is not a function

vue3中使用 keep-alive报错

TypeError: parentComponent.ctx.deactivate is not a function

代码:

<router-view #default="{ Component, route }">
          <keep-alive>
            <component :is="Component" v-if="route.meta.keepAlive" />
          </keep-alive>
          <component :is="Component" v-if="!route.meta.keepAlive" />
        </router-view>

只有一个文件缓存时,不会报错,多个需要缓存时就报错.所以使多个缓存数据需要指定 key

这个key,不要用 :key="Component"  虽然不会报错了,但是缓存不起作用

使用router定义的path或者name

<router-view #default="{ Component, route }">
          <keep-alive>
            <component
              :is="Component"
              :key="route.path"
              v-if="route.meta.keepAlive"
            />
          </keep-alive>
          <component :is="Component" v-if="!route.meta.keepAlive" />
        </router-view>

这样就可以了

posted @ 2022-12-29 18:01  潇湘羽西  阅读(1517)  评论(0编辑  收藏  举报