Я пытаюсь использовать GreenStock TweenMax
внутри метода реакции componentDidMount
, но вижу, что анимация не запускается (но методы onComplete
и 'onStart
работают нормально). Я попробовал несколько вещей, основанных на догадке, и обнаружил, что когда я добавляю setTimeout
на 100 мс, анимация воспроизводится. подозрение в том, что элемент еще не готов к моменту вызова GreenStock.
У меня сложилось впечатление, что componentDidMount
похоже на $(document).ready()
jquery.
вот мой простой код (без settimeout, написанного в кофейном скрипте:
componentDidMount: ->
commentList = React.findDOMNode(@refs.commentList)
console.log commentList
TweenMax.to commentList, 1,{opacity: 0,onComplete :-> console.log 'TL called'}
элемент commentList
возвращается правильно, но анимация не воспроизводится (но обратные вызовы на анимации есть)
что-то не так с этим кодом, или кто-то знает о проблемах между реакцией и tweenmax от greenstock?
componentDidMount
должно вернуть действительный элемент в этот момент. Если бы вы сделалиsetTimeout(fn,0)
, это тоже сработало бы? - person enjoylife   schedule 15.12.2015this.forceUpdate();
для повторной визуализации компонента внутри методаcomponentDidMount
перед вызовомTweenMax.to()
. хотя это и не рекомендуется, но здесь может оказаться полезным вместоsetTimeout
. - person Tahir Ahmed   schedule 15.12.2015setTimeout(fn,0)
не работает. время, которое работает, - этоsetTimeout(fn,1000)
, что заставляет меня думать, что в приложении есть какая-то задержка, потому чтоcomponentDidMount
следует (логически) вызывать только тогда, когда все из этого компонента находится в DOM. - person zero   schedule 15.12.2015this.forceUpdate( [function/callback] )
не работает иthis.setState()
с обратным вызовом. это похоже на то, что элемент не находится в DOM, когда вызываетсяcomponentDidMount
. Клянусь, реакция в последнее время испытывает мое терпение - person zero   schedule 15.12.2015