好吧,我會盡量讓這個快,因爲它應該是一個簡單的修復...爲什麼調用setState方法不會立即改變狀態?
我讀過一堆類似的問題,答案似乎很明顯。沒有什麼是我永遠不得不首先看的!但是......我有一個錯誤,我無法理解如何解決或爲什麼會發生。
如下:
class NightlifeTypes extends Component {
constructor(props) {
super(props);
this.state = {
barClubLounge: false,
seeTheTown: true,
eventsEntertainment: true,
familyFriendlyOnly: false
}
this.handleOnChange = this.handleOnChange.bind(this);
}
handleOnChange = (event) => {
if(event.target.className == "barClubLounge") {
this.setState({barClubLounge: event.target.checked});
console.log(event.target.checked)
console.log(this.state.barClubLounge)
}
}
render() {
return (
<input className="barClubLounge" type='checkbox' onChange={this.handleOnChange} checked={this.state.barClubLounge}/>
)
}
更多的代碼,環繞着這座但是這是我的問題所在。應該工作吧?
我也試過這樣:
handleOnChange = (event) => {
if(event.target.className == "barClubLounge") {
this.setState({barClubLounge: !this.state.barClubLounge});
console.log(event.target.checked)
console.log(this.state.barClubLounge)
}
所以,我有這兩個console.log()
的,都應該是相同的。我在字面上將狀態設置爲與上面的行中的event.target.checked
相同!
但它始終返回它應該的相反。
同樣適用於我使用!this.state.barClubLounge
;如果它開始是錯誤的,在我第一次點擊時它仍然是假的,即使複選框是否被選中是基於狀態!
這是一個瘋狂的悖論,我不知道發生了什麼,請幫助!