使用react-transition-group实现动画
Posted nothingness
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用react-transition-group实现动画相关的知识,希望对你有一定的参考价值。
安裝:cnpm i react-transition-group
详细介绍:
https://reactcommunity.org/react-transition-group/css-transition
/* 显示 */ /* fade-appear第一次显示执行的样式 */ .fade-enter,fade-appear{ opacity: 0; } .fade-enter-active,fade-appear-active{ opacity: 1; transition: opacity 1s ease-in ; } .fade-enter-done,fade-appear-done{ /* 动画执行完成后保留的样式 */ opacity: 1; } /* 隐藏 */ .fade-exit{ opacity: 1; } .fade-exit-active{ opacity: 0; transition: opacity 1s ease-in ; } .fade-exit-done{ opacity: 0; }
还需要引入定义的样式效果 需要的文件中引入:import { CSSTransition } from ‘react-transition-group‘;
<CSSTransition
in={this.state.show}
timeout={1000}
unmountOnExit//执行完成后dom销毁
classNames=‘fade‘
appear={true}//开启第一次执行展示的样式
// onEntered动画执行完成后执行的钩子函数
onEntered={(er)=>{er.style.color=‘red‘}}
>
<div>动画效果</div>
</CSSTransition>
<button onClick={this.ishide}>控制</button>
transition-group:https://reactcommunity.org/react-transition-group/transition-group
给多个div添加样式
引入TransitionGroup组件
import { CSSTransition, TransitionGroup } from ‘react-transition-group‘;
外层使用TransitionGroup,里面使用CSSTransition,那么CSSTransition 上面的 in={this.state.show}就不需要添加
<TransitionGroup>
{
this.state.list.map((itme,index) => {
return (
<CSSTransition
timeout={1000}
unmountOnExit//执行完成后dom销毁
classNames=‘fade‘
appear={true}//开启第一次执行展示的样式
// onEntered动画执行完成后执行的钩子函数
onEntered={(er)=>{er.style.color=‘red‘}}
key={index}
>
<div>{itme}</div>
</CSSTransition>
)
})
}
</TransitionGroup>
<button onClick={this.aaditem}>添加</button>
aaditem(){
this.setState((propsstate)=>{
return{
list:[...propsstate.list,‘item‘]
}
})
}
以上是关于使用react-transition-group实现动画的主要内容,如果未能解决你的问题,请参考以下文章
元素值在使用 react-transition-group 进行转换之前移动和更改
react-transition-group 中的退出延迟动画
使用 React,在使用 react-transition-group 时,在 StrictMode 中不推荐使用 findDOMNode 作为警告
使用 ReactDOM createPortal 为 react-transition-group 设置动画