解决vue3 TypeError: parentComponent.ctx.deactivate is not a function 报错

报错详情:

runtime-core.esm-bundler.js:6055 Uncaught (in promise) TypeError: parentComponent.ctx.deactivate is not a function
    at unmount (runtime-core.esm-bundler.js:6055:33)
    at patch (runtime-core.esm-bundler.js:5027:13)
    at sharedContext.activate (runtime-core.esm-bundler.js:2420:13)
    at processComponent (runtime-core.esm-bundler.js:5465:37)
    at patch (runtime-core.esm-bundler.js:5058:21)
    at ReactiveEffect.componentUpdateFn [as fn] (runtime-core.esm-bundler.js:5680:17)
    at ReactiveEffect.run (reactivity.esm-bundler.js:185:25)
    at instance.update (runtime-core.esm-bundler.js:5714:56)
    at updateComponent (runtime-core.esm-bundler.js:5539:26)
    at processComponent (runtime-core.esm-bundler.js:5472:13)


router-view官方示例:

<router-view v-slot="{ Component, route }">
  <!-- 注意  v-if="route.meta.isKeepAlive"放在keep-alive标签上不会生效 -->
  <keep-alive>
    <component :is="Component" v-if="route.meta.isKeepAlive"></component>
  </keep-alive>
  <component :is="Component" v-if="!route.meta.isKeepAlive"></component>
 </router-view>


解决办法:

我们只要为component动态组件添加一个唯一属性`key`即可

<router-view v-slot="{ Component, route }">
  <!-- 注意  v-if="route.meta.isKeepAlive"放在keep-alive标签上不会生效 -->
  <keep-alive>
    <component :is="Component" :key="route.name" v-if="route.meta.isKeepAlive"></component>
  </keep-alive>
  <component :is="Component" :key="route.name" v-if="!route.meta.isKeepAlive"></component>
</router-view>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值