好的,我会尽量快点,因为它应该很容易解决......
我已经阅读了一堆类似的问题,答案似乎很明显。没有什么我首先需要查找的!但是......我有一个错误,我无法理解如何修复或为什么会发生。
如下:
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
;如果它开始为假,在我第一次点击时它仍然是假的,即使复选框是否被选中是基于状态的!!
这是一个疯狂的悖论,我不知道发生了什么,请帮忙!