據我所見,componentWillMount
唯一能做的和constructor
不能是setState
。我們進入第一render()
通之前構造函數與componentWillMount; componentWillMount可以做什麼,構造函數不能做什麼?
componentWillMount() {
setState({ isLoaded: false });
}
因爲我們還沒有叫render
然而,在componentWillMount
一個setState
將準備狀態對象。這本質上是同樣的事情constructor
作用:
constructor(props) {
super(props);
this.state = { isLoaded: false };
}
但我看到另一個使用情況下componentWillMount
是有用的(服務器端)。
讓我們考慮的東西異步:
componentWillMount() {
myAsyncMethod(params, (result) => {
this.setState({ data: result });
})
}
在這裏我們不能使用constructor
作爲分配this.state
不會觸發render()
。
setState
componentWillMount
?根據React docs:
componentWillMount()
在安裝發生之前立即被調用。它在render(
之前調用 ),因此此方法中的設置狀態將不會觸發重新渲染。避免在此方法中引入任何副作用或 訂閱。
所以,在這裏,我認爲React將爲第一個渲染使用新的狀態值並避免重新渲染。
問題1:這是否意味着,內componentWillMount
,如果我們在異步方法的回調調用setState
(可以是承諾回調),反應,直到被執行回調塊初始渲染?
在客戶端(是的,我在服務器端呈現中看到該用例),如果我假設上述條件爲真,那麼直到我的異步方法完成後纔會看到任何內容。
我是否缺少任何概念?
問題2:是任何其他用途的情況下,我可以componentWillMount
而已,但不使用constructor
和componentDidMount
實現?
每個問題詢問**一個**問題,而不是兩個。 –
*問題1:這是否意味着,內componentWillMount,如果我們調用異步方法的回調的setState(可以是承諾回調),直到執行回調陣營塊初始渲染「*當然不是 - 如何將它知道?反應是強大的,但不是神奇。 –
我想知道我的第一個問題是完全有效的,否則我想知道什麼是'componentWIllMount'實際使用情況。對不起,問兩個問題中的一個問題。我沒有」不想複製在另一個問題我所有的研究案例。:) –