解决Vue根组件设置transition失效的问题

解决Vue根组件设置transition失效的问题

1.代码

html 复制代码
<div id="app">
   <!-- :name="$route.meta.transitionName" -->
   <transition :name="'animation'" mode="out-in">
     <router-view  />
   </transition>
 </div>
 <!-- 动画部分代码省略 -->

这样直接设置会发现路由切换时并没有效果,但是你每次修改代码后保存刷新页面时却又能看到一次动画效果。

2.解决办法

在router-view标签设置 key属性,并且确保是唯一的,这里我设置 :key="$route.fullPath"

以下为修改后的代码:

html 复制代码
<div id="app">
   <!-- :name="$route.meta.transitionName" -->
   <transition :name="'animation'" mode="out-in">
     <router-view :key="$route.fullPath" />
   </transition>
 </div>

修改后,transition动画就正常了。

分析

在 <router-view> 上使用 :key="route.fullPath" 时,每当路由发生变化时,route.fullPath 的值会发生变化,因为它会随着新的路由而更新。
这就意味着,每当路由切换时, 组件的 key 会变化,从而触发 Vue.js 重新渲染组件。
在重新渲染的过程中,过渡效果会应用于离开的旧组件和进入的新组件,从而实现平滑的过渡效果。

相关推荐
mapbar_front13 分钟前
react项目开发—关于代码架构/规范探讨
前端·react.js
二木一夕19 分钟前
Vue 3 的组合式 API和传统选项式 API区别(vue2转vue3,两者差异)
前端
LuckySusu21 分钟前
【vue篇】Vue 项目中的静态资源管理:assets vs static 终极指南
前端·vue.js
LuckySusu22 分钟前
【vue篇】Vue.delete vs delete:数组删除的“陷阱”与正确姿势
前端·vue.js
LuckySusu24 分钟前
【vue篇】Vue 模板编译原理:从 Template 到 DOM 的翻译官
前端·vue.js
小菜摸鱼26 分钟前
Node.js + vue3 大文件-切片上传全流程(视频文件)
前端·node.js
LuckySusu29 分钟前
【vue篇】Vue 2 响应式“盲区”破解:如何监听对象/数组属性变化
前端·vue.js
LuckySusu30 分钟前
【vue篇】Vue Mixin:可复用功能的“乐高积木”
前端·vue.js
勤奋菲菲34 分钟前
Vue3+Three.js:requestAnimationFrame的详细介绍
开发语言·javascript·three.js·前端可视化
洋不写bug42 分钟前
前端环境搭建,保姆式教学
前端