2 回答

TA貢獻1833條經驗 獲得超4個贊
在您的代碼中,您沒有完全為顯示設置狀態。例子:
const show = 'light';
this.setState({[show]: false}) // you set state for 'light'(this.state.light: false)
如果你之前沒有設置變量顯示,你應該使用:
this.setState({ show: true })
如果您需要在設置后立即獲得狀態:
this.setState({ show: true }, () => console.log("this.state.show: " , this.state.show);)

TA貢獻1810條經驗 獲得超4個贊
如果您試圖檢查 state 是否確實更新了,那么最好的方法就是在render()函數內部檢查它,因為當您更新 state 時,組件總是會重新渲染。這可能看起來像這樣(我添加了一個三元運算作為如何顯示和隱藏組件的示例):
render(){
console.log(this.state.show);
return this.state.show ? <MyComponent /> : null;
}
但是,如果您真的想檢查使用該setState函數后狀態是否發生變化,例如在另一個函數內部(而不是render()),您將需要console.log在回調內部調用。這是因為狀態需要一些時間來更新,因此同步代碼會失敗。setState將回調函數作為第二個參數。所以,你可以像這樣重寫:
this.setState({ show: true }, () => console.log("this.state.show: " , this.state.show));
希望有所幫助...
添加回答
舉報