Reactjs 反应复选框切换:行为与预期相反

Reactjs 反应复选框切换:行为与预期相反,reactjs,Reactjs,我正在制作一个简单的react组件,它应该跟踪表行中复选框的状态 class EventRowAdmin extends Component { constructor(props) { super(props); this.state = { isChecked: false }; this.handleChange = this.handleChange.bind(this); } handleChange(event) { this.setState(({

我正在制作一个简单的react组件,它应该跟踪表行中复选框的状态

class EventRowAdmin extends Component {
constructor(props) {
    super(props);
    this.state = { isChecked: false };
    this.handleChange = this.handleChange.bind(this);
}

handleChange(event) {
    this.setState(({ isChecked }) => (
      {
        isChecked: !isChecked
      }
    ));

    console.log(this.state.isChecked);
}

render() {
    return (
            <tr id={this.props.id}>
                <td><input onChange={this.handleChange} className="remove-event" type="checkbox" /></td>
            </tr>
    )
    }
}
class EventRowAdmin扩展组件{
建造师(道具){
超级(道具);
this.state={isChecked:false};
this.handleChange=this.handleChange.bind(this);
}
手变(活动){
this.setState(({isChecked})=>(
{
已检查:!已检查
}
));
console.log(this.state.isChecked);
}
render(){
返回(
)
}
}
从代码中可以看到,单击复选框后,我会将复选框的当前状态记录到控制台

尽管初始状态设置为false,但单击复选框会导致单击后将“false”输出到控制台。再次单击(未选中)后,“true”输出到控制台

对此有何解释

setState()不会立即改变this.state,但会创建 等待状态转换。调用此命令后访问this.state 方法可能返回现有值。没有 保证对setState的调用和可能发生的调用的同步操作 为提高性能而进行批处理

如果要在setState之后查看更新的状态值,请使用可选的回调参数:

     handleChange(event) {
        this.setState(({ isChecked }) => (
          {
            isChecked: !isChecked
          }
        ), function () {
            console.log(this.state.isChecked, 'updated state value');
        });
        console.log(event.target.checked);
      }
在这里您可以看到最后一个console.log也显示了复选框的实际值