Reactjs 反应复选框切换:行为与预期相反
我正在制作一个简单的react组件,它应该跟踪表行中复选框的状态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(({
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也显示了复选框的实际值