在 React 开发中,路由动画能显著提升用户体验。以下是常见实现方式与技巧:
基础概念
路由动画通过 组件切换时的过渡效果 实现,常用于页面切换、导航栏交互等场景。核心原理是利用 CSS 过渡或动画库控制组件的显示/隐藏状态。
- 📌 动画类型:淡入淡出(Fade)、滑动(Slide)、缩放(Zoom)等
- 🚀 实现工具:
react-router
+react-transition-group
或framer-motion
- 📱 浏览器兼容性:需注意 CSS 动画在移动端的性能优化
实现方法
1. 使用 react-transition-group
import { CSSTransition } from 'react-transition-group';
<CSSTransition
in={isVisible}
timeout={300}
classNames="fade"
unmountOnExit
>
<div>动画组件</div>
</CSSTransition>
⚠️ 需配合 CSS 类名定义动画效果,如
.fade-enter
、.fade-exit
2. framer-motion
动态动画
import { motion } from 'framer-motion';
<motion.div
initial={{ opacity: 0, x: -100 }}
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: 100 }}
transition={{ duration: 0.5 }}
>
动画内容
</motion.div>
示例代码
// 路由切换时触发动画
<Route
exact
render={({ location }) => (
<div className="page">
<CSSTransition
key={location.key}
timeout={500}
classNames="slide"
unmountOnExit
>
<Switch location={location}>
<Route path="/home" component={Home} />
<Route path="/about" component={About} />
</Switch>
</CSSTransition>
</div>
)}
/>
注意事项
- 动画性能:避免过度复杂的动画影响渲染速度
- 响应式设计:使用
@media
查询适配移动端 - 动画库选择:建议参考 React_动画库 选择最适合的方案
扩展阅读
如需深入了解 React 路由动画进阶技巧,可访问 React/路由动画实现进阶技巧 获取更多实践案例。