2016-10-14 185 views
0

我有一個組件的狀態是這樣的:陣營SETSTATE未設置狀態

this.state = { 
    mode: 'in', 
    current: { 
    messageId: '', 
    }, 
}; 

然後我SETSTATE這樣的:

const newState = update(this.state, { mode: { $set: 'out' }, 
             current: { messageId: { $set: '123' } } }); 
this.setState(newState); 

我一直在做這種方式,因爲我開始學習反應,它工作,除了這次它不工作,無論什麼原因。

console.log(newState)它顯示它們都正確更新:mode: 'out''current.messageId': '123'

但是當我setState只有'current.messageId': '123'正在設置,但mode仍然等於in

mode狀態將頁面的佈局從<InLayout />更改爲<OutLayout />。我以前用過這種方法很多次,它的工作,仍然有效...

所以困惑。誰能幫忙?

+1

'update'方法的作用是什麼? –

+0

我不知道你的'update'方法做了什麼,但是試試這個'this.setState({... newState})' – Panther

+0

不知道什麼更新函數。但這是你應該做的'const newState = {... this.state}; newState.mode ='out'; newState.current.messageId ='123'; this.setState(newState);' – anoop

回答

0

使用setState後,您無法獲得突變狀態。請檢查以下內容。

enter image description here