详解如何给React-Router添加路由页面切换时的过渡动画
PS:本篇文章使用的React-Router版本为react-router-dom:^5.0.0(兼容4.x)
使用过Vue2的同学们应该都知道
react-transition-group
我们需要借助React的官方动画库react-transition-group,文档戳这里
react-transition-group提供了三个React组件,分别是
:通过javascript动态修改style的方式为子元素添加动画,对比 多了几个编程式的props可以配置 :相比 多了一个classNames可以配置,通过引入CSS以及动态更改子元素className的方式为子元素添加动画(是不是像极了Vue里的 ) :顾名思义,为多个子元素添加动画,需要结合 或 使用
关于react-transititon-group与react-router的结合使用方式,官方文档里也给出了示例,但是直接拿来实现路由转场动画,我觉得方式并不够优雅。我还是更倾向于封装一个
编写过渡组件
实际代码也非常的简单
比如我们的路由长下面这个样子:
我们需要写一个
代码如下:
//AnimatedSwitch.less
//很多动画都需要给路由对应组件最外层元素设置position:absolute;
.route{
position:absolute;
left:0;
top:0;
width:100%;
height:100%;
}
//帧动画
.fade-enter{
opacity:0;
}
.fade-enter.fade-enter-active{
opacity:1;
transition:opacity300msease-in;
}
.fade-exit{
opacity:1;
}
.fade-exit.fade-exit-active{
opacity:0;
transition:opacity300msease-in;
}
//AnimatedSwitch.js
importReactfrom'react'
import{TransitionGroup,CSSTransition}from'react-transition-group'
import{Route,Switch}from'react-router-dom'
import'./AnimatedSwitch.less'
constAnimatedSwitch=props=>{
const{children}=props
return(
(
{children}
)}
/>
)
}
exportdefaultAnimatedSwitch
其中值得注意的是用到了
我们原有的JSX可以更换成如下结构:
至此,一个简单的
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。