使用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-grouphttps://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 设置动画

如何使用 React-Transition-Group 显示和隐藏带有动画的模态/对话框?

react-transition-group动画以及数字滚动效果实现