2015-02-05 52 views
2

在從DOM中刪除組件的元素後,是否有同步運行代碼的方法?從DOM中刪除元素後同步運行代碼

在我想做到這一點換句話說:

componentDidUnmount: function(){ 
    var thisEl = this.getDOMNode(); 
    var docEl = document.documentElement; 
    assert(!docEl.contains(thisEl)); 
} 

...而不是什麼哈克這樣的:

componentWillUnmount: function(){ 
    setTimeout(function(){ 
    var thisEl = this.getDOMNode(); 
    var docEl = document.documentElement; 
    assert(!docEl.contains(thisEl)); 
    }.bind(this), 0); 
} 

回答

0

您需要在父處理這個問題。在componentWillUnmount之後,你的組件被認爲是在其生命的盡頭,並且不能再做任何事情。

父級的componentDidUpdate將在子級的componentWillUnmount後被調用。一個複雜的例子可以在ReactTransitionGroup.js中找到,這是我能想到的唯一用例。

+0

「父級的componentDidUpdate將在子級的componentWillUnmount之後調用」 - 我無法獲得此功能。但是,如果父元素還沒有被卸載,也許這只是真的? – greim 2015-02-05 21:50:15

+0

是的,這是正確的。 – FakeRainBrigand 2015-02-05 22:38:31