您可以使用 componentDidUpdate 和 componentDidMount 方法以及 div 的 ref 显式设置 div 的 CSS 属性,如下所示:
endAnimation () {
setTimeout(()=>{
this.refs.animatedDiv.className = "newClassToReset"
}, this.animationLength);
},
componentDidMout (){
this.endAnimation();
},
componentDidUpdate (){
this.endAnimation
}
但是,如果您使用 CSS 制作动画,最好使用官方的 ReactCSSTransitionGroups 插件,可以在此处找到:
https://facebook.github.io/react/docs/animation.html
设置起来真的很容易,你的例子是这样的:
<ReactCSSTransitionGroup transitionName="shrink" transitionAppear={true} transitionAppearTimeout={500}>
<div className="bar">Bar</div>
</ReactCSSTransitionGroup>
然后在您的 CSS 文件中提供以下类:
.shrink-appear {
height: 700px;
}
.shrink-appear.shrink-appear-active {
height: 0;
transition: height 500ms ease-in;
}
过渡组的工作方式是首先将类shrink-appear 添加到需要动画的元素,然后另外添加shrink-appear-active,因为我们的transitionName 是“shrink”。
如果你想做一个离开动画,你可以通过向转换组提供一个 transitionLeaveTimeout 并定义 2 个新类来实现,在我们的示例中,这些类是:
.shrink-leave {
height: 0;
}
.shrink-leave.shrink-leave-active {
opacity: 700;
transition: height 500ms ease-in;
}
如您所见,离开动画类与我们的出现动画相反,以提供相反的效果。