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

相关推荐
张人玉6 分钟前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
程序员爱钓鱼20 分钟前
第一个 Go 程序:Hello World
前端·后端·go
阳光是sunny23 分钟前
LangGraph 核心概念详解:从编译到可视化
前端·人工智能·后端
寒水馨38 分钟前
macOS下载、安装electron-v43.2.0(附安装包electron-v43.2.0-darwin-arm64.zip)
javascript·macos·electron·node.js·跨平台·桌面应用开发·开源框架
不好听6131 小时前
React 父子组件通信:从 Todo 应用理解单向数据流
前端·react.js
光影少年1 小时前
RN 路由栈管理、页面销毁、返回拦截
javascript·react native·react.js
_lucas1 小时前
做了一个glsl在线调试工具
前端·javascript·three.js
To_OC9 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
腻害兔9 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
不好听6139 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端