内容简介:该库的前两个基本组件可以查看以上链接:link:,今天搬到了新的房子里,还是很满意的,明天就要去新公司报道了,希望能和新同事好好相处,完成2019年的几个目标。<TransitionGroup>组件管理列表中的一组<Transition>组件。与<Transition>类似,<TransitionGroup>是一种状态机,用于管理组件随时间的安装和卸载。下面的例子使用了之前的渐变CSS过渡。当项目被删除或添加到TodoList时,in属性会被自动切换。可以在<TransitionGroup>中使用任何<Tr
导语
该库的前两个基本组件可以查看以上链接:link:,今天搬到了新的房子里,还是很满意的,明天就要去新公司报道了,希望能和新同事好好相处,完成2019年的几个目标。
TransitionGroup
<TransitionGroup>组件管理列表中的一组<Transition>组件。与<Transition>类似,<TransitionGroup>是一种状态机,用于管理组件随时间的安装和卸载。
下面的例子使用了之前的渐变CSS过渡。当项目被删除或添加到TodoList时,in属性会被自动切换。可以在<TransitionGroup>中使用任何<Transition>组件,而不仅仅是css。
第一步: 导入需要的文件
import React,{ Component } from 'react'
import { CSSTransition, TransitionGroup } from 'react-transition-group'
import './css/index.css'
第二步:编写初始state里的列表项
state = {
items: [
{ id: 1, text: 'Buy eggs' },
{ id: 2, text: 'Pay bills' },
{ id: 3, text: 'Invite friends over' },
{ id: 4, text: 'Fix the TV' },
]
}
第三步:编写列表项
<TransitionGroup className="todo-list">
{items.map(({ id, text }) => (
<CSSTransition
key={id}
timeout={500}
classNames="show">
<div className="todo-list-item">
<button
className='cancle'
onClick={() => {
this.setState(state => ({
items: state.items.filter(
item => item.id !== id
),
}));
}}>
×
</button>
<span className='item-text'>{text}</span>
</div>
</CSSTransition>
))}
</TransitionGroup>
记住,要把所有需要管理的列表项都写在<TransitionGroup> 中,其次,<CSSTranstion> 组件的in属性此时由<TransitionGroup> 管理了,不需要单独设置了,当点击删除按钮时,list中的对应项将会被删除,对应项的in 属性将会被自动改为false,从而触发离场动画。
第四步:添加按钮
<button
className='add'
onClick={() => {
const text = prompt('Enter some text');
if (text) {
this.setState(state => ({
items: [
...state.items,
{ id: 1123, text },
],
}));
}
}}>
Add Item
</button>
当点击添加按钮,输入文字后,将会把此项添加到列表中,此时in属性为true,同时默认设置了首次动画,所以会触发一次进场动画。
效果图
完整代码
//index.js
import React,{ Component } from 'react'
import { CSSTransition, TransitionGroup } from 'react-transition-group'
import './css/index.css'
export default class App extends Component {
state = {
items: [
{ id: 1, text: 'Buy eggs' },
{ id: 2, text: 'Pay bills' },
{ id: 3, text: 'Invite friends over' },
{ id: 4, text: 'Fix the TV' },
]
}
render () {
const { items } = this.state
return (
<div className='container'>
<TransitionGroup className="todo-list">
{items.map(({ id, text }) => (
<CSSTransition
key={id}
timeout={500}
classNames="show"
unmountOnExit>
<div className="todo-list-item">
<button
className='cancle'
onClick={() => {
this.setState(state => ({
items: state.items.filter(
item => item.id !== id
),
}));
}}>
×
</button>
<span className='item-text'>{text}</span>
</div>
</CSSTransition>
))}
</TransitionGroup>
<button
className='add'
onClick={() => {
const text = prompt('Enter some text');
if (text) {
this.setState(state => ({
items: [
...state.items,
{ id: 1123, text },
],
}));
}
}}>
Add Item
</button>
</div>
)
}
}
//index.css
.show-enter {
opacity: 0.01;
}
.show-enter-active {
opacity: 1;
transition: all 300ms ease-out;
}
.show-exit {
opacity: 1;
}
.show-exit-active {
opacity: 0.01;
transition: all 300ms ease-out;
}
.container {
position: absolute;
top: 20px;
left: 100px;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px 1px rgb(202, 202, 202);
}
.todo-list {
border-radius: 5px;
box-shadow: 0 0 5px 1px rgb(202, 202, 202);
}
.todo-list-item {
height: 35px;
line-height: 35px;
padding: 0 10px;
border-bottom: 1px solid rgb(202, 202, 202);
}
.todo-list-item:last-of-type {
border-bottom: 0;
}
.item-text {
margin-left: 10px;
}
.cancle {
border: 0;
color: #fff;
background-color: #F04134;
border-radius: 3px;
box-shadow: 0 0 5px 1px rgb(202, 202, 202);
}
.add {
border: 0;
height: 30px;
line-height: 30x;
width: 120px;
margin-top: 15px;
font-size: 14px;
border-radius: 3px;
box-shadow: 0 0 5px 1px rgb(202, 202, 202);
}
Porps
<TransitionGroup> 的常用属性主要就2个
component
default 'div' 也就是TransitionGroup渲染出来的标签为div,也可以就行更改,例如component="span" 渲染出来的就是span标签了
type: any
default: 'div'
children
相当于你给的组件,可以是字符串或者自定义组件等。
type: any
以上所述就是小编给大家介绍的《React Transition Group -- TransitionGroup 组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- React 组件模式-有状态组件 x 无状态组件、容器组件 x 展示组件、高阶组件 x 渲染回调(函数作为子组件)
- Serverless 组件开发尝试:全局变量组件和单独部署组件
- angular自定义组件-UI组件篇-switch组件
- React Hooks 源码解析(一):类组件、函数组件、纯组件
- Vue动态组件和异步组件
- Vue 动态组件 & 异步组件原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法交易:制胜策略与原理
[美]欧内斯特·陈(Ernest P. Chan) / 高闻酉、黄蕊 / 机械工业出版社 / 49.00
本书是一本引人入胜、信息量大、覆盖各类交易策略的图书。无论个人投资者,还是机构投资者,都可以借鉴和使用其中的策略。本书中的策略大致可分为均值回归系统和动量系统两大类。书中不仅介绍了如何使用每种类别的交易策略,更解释了各种策略之所以有效的原因。本书始终以简单、线性的交易策略为重心,因为复杂的交易策略容易受到过度拟合及数据窥探的侵害。数学和软件是算法交易的两条腿。本书用到了一定程度的数学知识,使其对各......一起来看看 《算法交易:制胜策略与原理》 这本书的介绍吧!