vue3问题--[Vue Router warn]: <router-view> can no longer be used directly inside <transition> or <keep

router-view can no longer be used directly inside transition or keep-alive

 

代码

<transition name="router-fade" mode="out-in">
  <keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
  </keep-alive>
</transition>
<transition name="router-fade" mode="out-in">
  <router-view v-if="!$route.meta.keepAlive"></router-view>
</transition>

提示信息

[Vue Router warn]: <router-view> can no longer be used directly inside <transition> or <keep-alive>.
Use slot props instead:

<router-view v-slot="{ Component }">
  <transition>
    <component :is="Component" />
  </transition>
</router-view>

修正

<router-view v-slot="{ Component }">
  <transition name="router-fade" mode="out-in">
     <keep-alive>
       <component :is="Component"/>
     </keep-alive>
  </transition>
</router-view>

又报另外一个错误Vue 3 – <Transition> renders non-element root node that cannot be animated

组件页面中最外层还是要有个根节点包裹

<template>
  <!-- 添加home-container的div就能解决上述报错 -->
  <div class="home-container">
    <h2>{{ state }}</h2>
    <button @click="testToRaw">测试toRaw</button>
    <button @click="testMarkRaw">测试markRaw</button>
  </div>
</template>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值