react路由动画?

简介: react路由动画?

新建一个layouts文件夹,文件夹内部包含index.less和index.tsx

       

1. import React, { useState, useEffect } from 'react'
2. import { TransitionGroup, CSSTransition } from 'react-transition-group'
3. import { history as Router, withRouter } from 'umi'
4. import { Switch } from 'react-router'
5. import './index.less'
6. 
7. const routerType = {
8. 'POP': 'back',
9. 'PUSH': 'in',
10. 'REPLACE': 'in'
11.     }
12. export default withRouter(({ location, children, history }) => {
13. return (
14. <TransitionGroup className='transition_wrapper' childFactory={(child) => (
15.          React.cloneElement(child, { classNames: routerType[history.action] })
16.    )}>
17. <CSSTransition key={location.pathname} appear timeout={2000}>
18.          {/* children.props.chiildren就是一个<Router></Router>的列表,location是对应的路由,switch会匹配对应当前hash展示路由 */}
19. <Switch location={location}>{(children as any)?.props?.children}</Switch>
20. </CSSTransition>
21. </TransitionGroup>
22. )
23. })
1. .in-enter-active{  // 入场的过渡状态类
2.     transition: all 3s;
3.     transform: translate(0, 0)!important;
4.   }
5. 
6.   .in-enter-done { // 入场的动画的结束状态类
7. // opacity: 0.5;
8.       transform: translate(0, 0) !important;
9.   }
10. 
11.   .in-enter {  // 入场的动画开始状态类
12.     z-index: 5 !important;
13.     transform: translate(100%, 0);
14.   }
15. 
16.   .in-exit-active {    // 离场动画
17.       opacity:0;
18.       transition: all 3s;
19.       transform: translate(-100%, 0)!important;
20.   }
21. 
22.   .in-exit {  // 离场动画开始
23. // transform: translate(0, 0)!important;
24.   }
25.   .in-exit-done { // 离场动画结束
26. 
27.   }
28. 
29. // 返回动画
30.   .back-enter-active{  // 入场的过渡状态类
31.       transition: all 3s;
32.       transform: translate(0, 0)!important;
33. 
34.     }
35.   .back-enter-done { // 入场的动画的结束状态类
36. // opacity: 0.5;
37.       transform: translate(0, 0) !important;
38.   }
39. 
40.   .back-enter {  // 入场的动画开始状态类
41.       z-index: 5 !important;
42.       transform: translate(-100%, 0);
43.   }
44. 
45.   .back-exit-active {    // 离场动画
46.       opacity:0;
47.       transition: all 3s;
48.       transform: translate(100%, 0)!important;
49.   }
50. 
51.   .back-exit {  // 离场动画开始
52. // transform: translate(0, 0)!important;
53.   }
54.   .back-exit-done { // 离场动画结束
55. 
56.   }

配置好其他路由信息:

       

1. import React from 'react'
2. import { Button } from 'antd'
3. import { history } from 'umi'
4. import styles from './index.less'
5. import './index.less'
6. 
7. type Props = {}
8. 
9. export default function index({ }: Props) {
10. return (
11. <div className='divindex'>
12. <h1>index主页面展示</h1>
13. <Button color='primary' onClick={() => {
14.         history.push('./list')
15.       }}>点击跳转</Button>
16. 
17. </div>
18.   )
19. }


相关文章
|
3月前
|
前端开发 JavaScript
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
本文介绍了在React项目中实现路由懒加载的方法,使用React提供的`lazy`和`Suspense`来优化项目首次加载的速度。通过将路由组件改为懒加载的方式,可以显著减少初始包的大小,从而加快首次加载速度。文章还展示了如何使用`Suspense`组件包裹`Switch`来实现懒加载过程中的fallback效果,并提供了使用前后的加载时间对比,说明了懒加载对性能的提升作用。
243 2
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
|
1月前
|
前端开发 API UED
React 路由守卫 Guarded Routes
【10月更文挑战第26天】本文介绍了 React 中的路由守卫(Guarded Routes),使用 `react-router-dom` 实现权限验证、登录验证和数据预加载等场景。通过创建 `AuthContext` 管理认证状态,实现 `PrivateRoute` 组件进行路由保护,并在 `App.js` 中使用。文章还讨论了常见问题和易错点,提供了处理异步操作的示例,帮助开发者提升应用的安全性和用户体验。
53 1
|
4月前
|
移动开发 资源调度 前端开发
介绍React路由模式
【8月更文挑战第10天】介绍React路由模式
63 12
|
1月前
|
前端开发 安全 网络安全
React——路由Route
React——路由Route
35 2
React——路由Route
|
2月前
|
资源调度 前端开发 测试技术
React Router 路由管理
【10月更文挑战第10天】本文介绍了 React Router,一个在 React 应用中管理路由的强大工具。内容涵盖基本概念、安装与使用方法、常见问题及解决方案,如路由嵌套、动态路由和路由守卫等,并提供代码示例。通过学习本文,开发者可以更高效地使用 React Router,提升应用的导航体验和安全性。
311 19
|
2月前
|
前端开发 网络架构
React 路由
10月更文挑战第11天
37 2
|
2月前
|
前端开发 JavaScript 网络架构
实现动态路由与状态管理的SPA——使用React Router与Redux
【10月更文挑战第1天】实现动态路由与状态管理的SPA——使用React Router与Redux
46 1
|
3月前
|
前端开发 Python
React技术栈-React路由插件之自定义组件标签
关于React技术栈中React路由插件自定义组件标签的教程。
65 4
React技术栈-React路由插件之自定义组件标签
|
3月前
|
移动开发 前端开发 应用服务中间件
React两种路由模式的实现原理
React两种路由模式的实现原理
106 3
|
3月前
|
前端开发 程序员 API
React技术栈-React路由插件之react-router的基本使用
这篇博客介绍了React路由插件react-router的基本使用,包括其概念、API、以及如何通过实战案例在React应用中实现SPA(单页Web应用)的路由管理。
85 9