【发布时间】:2016-07-25 10:01:19
【问题描述】:
我有以下 React 组件:
var Hello = React.createClass({
getInitialState: function() {
return {
visibility: 'visible'
};
},
toggleState: function() {
if (this.state.visibility === 'visible') {
this.setState({visibility: 'hidden'});
} else {
this.setState({visibility: 'visible'});
}
},
componentDidMount: function () {
var self = this;
setInterval(function() {
self.toggleState();
}, 5000);
},
render: function() {
return <div className={"animated " + (this.state.visibility === 'visible' ? 'fadeIn' : 'fadeOut')}>{this.state.visibility}</div>;
}
});
见小提琴here。
基本上,我通过state 属性visibility 使用animate.css 来控制显示的字符串和组件的可见性。
副作用是,当组件淡出时,它显示“隐藏”,然后开始隐藏。我想早点开始动画,只有在完成后,更改字符串,这样“隐藏”才不会真正显示出来。
实现这种同步的最佳方式是什么?
【问题讨论】:
-
我相信最好的方法是监听“animationend”事件。这是更新的小提琴jsfiddle.net/69z2wepo/50313
-
有趣。你从哪里得到
animationend事件?你想写一个答案吗? -
这只是 css3-animations 规范的一部分。我的意思没有什么特别的,只是一个本地事件。如有必要,请注意为其添加供应商前缀。
标签: javascript css reactjs animate.css