Ответ 1
ReactTransitionGroup
(на котором построен ReactCSSTransitionGroup
) - базовый компонент, который позволяет асинхронно вводить и уходить. Он предоставляет привязки для жизненного цикла, которые вы можете использовать для привязки к анимации на основе JS. Список документов разрешенные крючки:
ReactTransitionGroup
является основой для анимации. Когда дети декларативно добавляются или удаляются из него (как в примере выше), на них вызываются специальные крючки жизненного цикла. Существует три способа начать использоватьReactCSSTransitionGroups
:
import ReactCSSTransitionGroup from 'react-addons-css-transition-group' // ES6
var ReactCSSTransitionGroup = require('react-addons-css-transition-group') // ES5 with npm
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup; // ES5 with react-with-addons.js
componentWillAppear(callback)
Это называется в то же время, что и
componentDidMount()
для компонентов, которые изначально установлены вTransitionGroup
. Он блокирует другие анимации до тех пор, пока не будет вызванcallback
. Он вызывается только при первоначальном рендерингеTransitionGroup
.
componentDidAppear()
Это вызывается после того, как вызывается функция
callback
, которая была передана вcomponentWillAppear
.
componentWillEnter(callback)
Это называется одновременно с
componentDidMount()
для компонентов, добавленных в существующийTransitionGroup
. Он блокирует другие анимации до тех пор, пока не будет вызванcallback
. Он не будет вызываться при первоначальном рендерингеTransitionGroup
.
componentDidEnter()
Вызывается после того, как вызывается функция
callback
, которая была передана вcomponentWillEnter
.
componentWillLeave(callback)
Это вызывается, когда дочерний элемент был удален из
ReactTransitionGroup
. Хотя ребенок удален,ReactTransitionGroup
будет хранить его в DOM до тех пор, пока не будет вызванcallback
.
componentDidLeave()
Это вызывается, когда вызывается
willLeave
callback
(в то же время, что иcomponentWillUnmount
).
Чтобы анимировать дочерний элемент, вам нужно запустить анимацию в componentWillLeave
и вызвать предоставленный callback
, когда анимация будет завершена. Например, здесь JSFiddle, показывающий компонент, который шагает - анимирует его дочерние элементы: http://jsfiddle.net/BinaryMuse/f51jbw2k/
Соответствующий код для анимации:
componentWillLeave: function(callback) {
this._animateOut(callback);
},
_animateOut(callback) {
var el = ReactDOM.findDOMNode(this);
setTimeout(function() {
TweenLite.to(el, 1, {opacity: 0}).play().eventCallback("onComplete", callback);
}, this.props.animateOutDelay);
},