看看下面的例子,我使用了react-transition-group,因为来自react-addons-css-transition-group的文档说:
此包中的代码已移动。我们建议您改用 react-transition-group 中的 CSSTransitionGroup。
您可以将CSSTransition 代替ReactCSSTransitionGroup 用于一个项目,或者与TransitionGroup 组合用于CSSTransition 组件列表:
import { CSSTransition } from "react-transition-group";
...
<CSSTransition
in={this.state.show}
timeout={400}
classNames="Test"
unmountOnExit
>
{this.renderTextField()}
</CSSTransition>
您必须从renderTextField 中删除if (!this.state.show) { return null; },因为CSSTransition 需要一个孩子。
test.css(opacity 属性不是强制性的)
.TestWrapper {
position: relative;
left: 0px;
}
.Test-enter {
left: 100px;
opacity: 0;
}
.Test-enter-active {
opacity: 1;
left: 0px;
transition: left 400ms, opacity 400ms;
}
.Test-exit {
opacity: 1;
left: 0px;
}
.Test-exit-active {
opacity: 0;
left: 100px;
transition: left 400ms, opacity 400ms;
}
工作示例: