2017-07-26 113 views
0

根據setState documentation回調應在新狀態設置後觸發。然而,我的代碼SetState回調不等待狀態更新

console.log(school); 
this.setState({ lastSegment: school },console.log(this.state.lastSegment)); 

打印:

Middle 
Grammar 

由於學校= 「中」 爲什麼是的setState回調印刷 「語法」(這是this.state.lastSegment以前的值)

回答

4

callback是作爲參數傳遞給另一個函數的函數,有時稱爲anonymous函數,它表示沒有名稱的函數,因此您正在執行console.log,並返回值作爲第二個參數t到setState。你想傳入一個函數,而不是console.log的結果。

this.setState({ lastSegment: school },() => { 
    console.log(this.state.lastSegment); 
}); 

,或者使用ES5語法:

this.setState({ lastSegment: school }, function() { 
    console.log(this.state.lastSegment); 
});