У меня есть следующие компоненты React: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.
В основном я контролирую как отображаемую строку, так и видимость компонентов, используя animate.css через state
. visibility
.
Побочный эффект заключается в том, что когда компонент затухает, он показывает «скрытый», а затем начинает скрываться. Я хотел бы начать анимацию раньше, и только после того, как это будет сделано, измените строку, чтобы «скрытый» никогда не отображался.
Каков наилучший способ для достижения такой синхронизации?
Я считаю, что лучший способ слушать для 'animationend' события. Здесь обновляется скрипка https://jsfiddle.net/69z2wepo/50313/ –
Интересно. Откуда вы получаете событие «анимация»? Вы хотите написать ответ? –
Это всего лишь часть спецификации css3-animations. Я имею в виду ничего особенного, просто родное событие. Имейте в виду добавить к нему префиксы поставщика, если это необходимо. –