解决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 重新渲染组件。
在重新渲染的过程中,过渡效果会应用于离开的旧组件和进入的新组件,从而实现平滑的过渡效果。

相关推荐
弄不死的强仔42 分钟前
可被electron等调用的Qt截图-录屏工具【源码开放】
前端·javascript·qt·electron·贴图·qt5
霸王蟹1 小时前
el-table组件样式如何二次修改?
前端·javascript·vue.js·笔记·学习·前端框架
star010-2 小时前
一文学会HTML编程之视频+图文详解详析
前端·网络·网络安全·html·html5
star010-2 小时前
【视频+图文详解】HTML基础3-html常用标签
前端·css·网络安全·html·html5·学习方法
无限大.7 小时前
前端知识速记:节流与防抖
前端
十八朵郁金香8 小时前
【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能
前端·javascript·vue.js
学问小小谢8 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
LCG元8 小时前
Vue.js组件开发-实现全屏图片文字缩放切换特效
前端·javascript·vue.js
还是鼠鼠9 小时前
图书管理系统 Axios 源码__新增图书
前端·javascript·vscode·ajax·前端框架·node.js·bootstrap
customer0810 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源