React列表动画实现

本文介绍了如何在React中使用react-transition-group库实现列表的进入和离开动画。通过TransitionGroup和CSSTransition组件结合CSS样式,创建了添加和删除列表项时的平滑过渡效果。关键步骤包括设置唯一的key属性,定义CSS过渡效果以及绑定增加和删除操作的方法。
摘要由CSDN通过智能技术生成

在React列表动画实现

列表动画使用的react-transition-group中的TransitionGroup,CSSTransition。
使用TransitionGroup包裹CSSTransition实现列表。

效果图在这里插入图片描述
  • 首先安装react-transition-group包
npm i -s react-transition-group
  • state内容
this.state = {
           list:[],
           input:''
        }
  • 增加和删除方法
handleClick(){
        this.setState(state=>{
            const input = state.input;
            const list = [...state.list,input];
            return {
                input:'',
                list
            }
        })
    }
handDel(index){
      const list = this.state.list.slice()
      list.splice(index,1)
      this.setState({
          list
      })
  }
  • 列表渲染
<TransitionGroup>
  {this.state.list.map((r,index)=>
    <CSSTransition key={r} classNames='listEnter' timeout={500}>
       <ListItem text={r} del={this.handDel.bind(this,index)}/>
    </CSSTransition>
  )}
</TransitionGroup>
  • 列表项
function ListItem(props) {
    return (
            <div className={css['listItem']}>
                <p>{props.text}</p>
                <span onClick={props.del}>×</span>
            </div>
    )
}
  • 进入动画和离开动画
.listEnter-enter-active,.listEnter-exit-active{
  transition:all 0.5s ease-in-out;
}
.listEnter-enter{
  opacity: 0;
  transform: translateX(-100%);
}
.listEnter-enter-active{
  opacity: 1;
  transform: translateX(0);
}
.listEnter-exit{
  opacity: 1;
  transform: scale(1);
  max-height: 50px;
}
.listEnter-exit-active{
  opacity: 0;
  transform: scale(0);
  max-height: 0;
}
注意事项

在使用map渲染列表的时候,key值一定要唯一,不然会导致动画重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值