2017-09-13 71 views
0

我不知道如何處理關鍵字,所以我無法檢查重複的問題。這個關於回調函數this.setState的未來狀態

昨天我打開react.js的內部,看着ReactComponent.prototype.setState。在函數的頂部,描述中有以下語句。

當一個函數提供給setState時,它將在未來的某個點(不同步)被調用。它將被調用最新的組件參數(狀態,道具,上下文)。這些值可能與此不同。*因爲您的函數可能會在receiveProps之後但在shouldComponentUpdate之前調用,並且此新狀態,道具和上下文尚未分配給此值。

看來,整個背景是,當我寫一個回調函數,this.*可能是從我預計在未來的某個時刻不同,它不是吸引到我的腦海裏具體會發生什麼。

如果可能的話,我將不勝感激,如果你能給我一個簡單的例子。

+0

你可能會看看它https://stackoverflow.com/questions/45273948/what-happens-when-setstate-function-is-called/45274008#45274008 –

+0

謝謝!我會讀它。 –

回答

1

這意味着,當你是一個回調的setState裏面statepropscontext都不能保證你會發現在this.statethis.propsthis.context相同的對象。例如。

this.setState((state, props, context) => { 
    this.state === state // false 
    this.props === props // false 
    this.context === context // false 
}) 

換句話說,不要吃的什麼的setState回調傳遞你的參數以外的任何物體。

+0

謝謝,這是我想要的! –