01-React-组件-TransitionGroup

news/发布时间2024/5/19 22:20:15

TransitionGroup 的作用,博主用通俗易懂的话来讲就是一个一组元素添加动画,在我们的实际开发当中有时可能会有这么一个需求就是,在一个页面上,有添加和删除,在做这些操作的时候需要都带上动画,那么这个时候就可以使用 TransitionGroup 来快速实现。

案例

App.js:

import React from 'react';
import './App.css'
import {CSSTransition, TransitionGroup} from 'react-transition-group';class App extends React.Component {constructor(props) {super(props);this.state = {heroList: [{id: 1, name: '鲁班'},{id: 2, name: '虞姬'},{id: 3, name: '黄忠'},]}}render() {return (<div><ul><TransitionGroup>{this.state.heroList.map((obj, index) => {return (<CSSTransition key={obj.id}timeout={3000}classNames={'item'}><lionClick={() => {this.removeHero(index)}}>{obj.name}</li></CSSTransition>)})}</TransitionGroup></ul><buttononClick={() => {this.btnClick()}}>新增</button></div>);}btnClick() {this.setState({heroList: [...this.state.heroList, {id: this.state.heroList.length + 1, name: '阿珂'}]})}removeHero(index) {const list = this.state.heroList.filter((idx) => {return idx !== index;})this.setState({heroList: list})}
}export default App;

App.css:

.item-enter {/*进入动画执行之前绑定的类名*/opacity: 0;transform: translateX(100%);
}.item-enter-active {/*进入动画执行过程中绑定的类名*/opacity: 1;transform: translateX(0);transition: all 3s;
}.item-enter-done {/*进入动画执行完毕之后绑定的类名*/
}.item-exit {/*退出动画执行之前绑定的类名*/opacity: 1;transform: translateX(0);
}.item-exit-active {/*退出动画执行过程中绑定的类名*/opacity: 0;transform: translateX(100%);transition: all 3s;
}.item-exit-done {/*退出动画执行完毕之后绑定的类名*/
}

注意点

  • 在企业开发中一定要保证 CSSTransition key 的唯一性,否则动画会失效
  • TransitionGroup 与 CSSTransition 是紧贴的,中间不能包含其它元素,否则动画则不会生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/01415240.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

【算法】算法性能分析

1 时间复杂度 1.1 知识点 时间复杂度是一个函数,它定性描述该算法的运行时间。 通常会估算算法的操作单元数量来代表程序消耗的时间。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法…

读高性能MySQL(第4版)笔记14_备份与恢复(中)

备份与恢复1. 在线备份 2. 离线备份 2.1. 关闭MySQL做备份是最简单、最安全的 2.2. 所有获取一致性副本的方法中最好的 2.3. 损坏或不一致的风险最小 2.4. 根本不用关心InnoDB缓冲池中的脏页或其他缓存 2.5. 不需要担心数据在尝试备份的过程中被修改 2.5.1. 服务器不对应用提供…

#0 | 蜕

New Born.总会下意识躲闪 不能预知的未来 越是奋不顾身 越会被眼泪覆盖 渴望能变得从容 会让心有恃无恐 寻找一种状态 重新对明天期盼回忆在慢慢浮现 那个单纯的小孩 走在孤独边界 想象天空的蔚蓝 渴望能赢得信赖 填满心所有缺口 让失落的勇气 还能再次被点燃我在黑暗中游走 呼…

promise和vue-router

认真学习前端第三天打卡 1.promise的输出题,看了一会没看完,头痛 2.学习了vue-router的基础文档 1.router-link:可以用作导航栏,要在router->index.js里写路径(做链接)2.动态路由$route.params.id相应路由参数变化?捕获路由?3.路由的匹配语法?4.嵌套路由:使router …

rockerMQ双主双从集群搭建

总体架构集群工作流程启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。 Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,N…