1
我試圖在反應的componentDidMount
方法中使用GreenStock TweenMax
,但我看到動畫未觸發(但onComplete
和'onStart
方法正好觸發)。我嘗試了一些基於預感的東西,發現當我在100ms內添加一個setTimeout
時,動畫就會播放。直覺就是在GreenStock被召喚的時候,元素並沒有真正準備好。tweenMax.to不能在反應組件中工作DidMount
我的印象是,componentDidMount
類似於jQuery的$(document).ready()
這裏是我的簡單的代碼(未經書面咖啡腳本的setTimeout:
componentDidMount: ->
commentList = React.findDOMNode(@refs.commentList)
console.log commentList
TweenMax.to commentList, 1,{opacity: 0,onComplete :-> console.log 'TL called'}
元素被正確地返回commentList
,但動畫不播放(但動畫回調)
這個代碼有什麼問題,或者有人知道反應之間的問題nd greenstock的tweenmax?
你的右那'componentDidMount'應該在那個時候返回一個有效的元素。如果你要做一個'setTimeout(fn,0)',那麼它是否也能工作? – enjoylife
你可以嘗試使用** ['this.forceUpdate();'](https://facebook.github.io/react/docs/component-api.html#forceupdate)**來重新渲染組件在調用TweenMax.to()調用之前調用'componentDidMount'方法。它雖然不被推薦,但可以在這裏證明是有用的,而不是'setTimeout'。 –
@mattclemens使用'setTimeout(fn,0)'不起作用。工作的時間是'setTimeout(fn,1000)',這使我認爲應用程序存在某種滯後,因爲'componentDidMount'應該(邏輯上)只在該組件的所有內容位於DOM上時才被調用 – zero