gpt4 book ai didi

javascript - React 复选框 - Onchange 复选框,第一次未定义

转载 作者:行者123 更新时间:2023-12-01 17:16:32 24 4
gpt4 key购买 nike

React 复选框 - 第一次点击(时间)将输出更改为未定义。之后显示有效的 true 或 false 输出。我用谷歌搜索了这个问题,但没有解决问题。

请帮助,我在这里做错了什么。

我在State中定义checked为false:

  constructor() {
super();
this.state = {
formFields: {
checked: false,
},
};
}

处理复选框:

handleCheckBox = (e) => {
this.setState({ checked: !this.state.checked });
console.log("checked", this.state.checked);
// this.setState({ checked: !this.state.formFields.checked });
// console.log("checked", this.state.formFields.checked);
};

解构:

const { ...formFields } = this.state;

在表单checkbox中输入如下:

<input
type="checkbox"
checked={formFields.checked}
onChange={this.handleCheckBox}
/>

第一次检查输出如下: output

最佳答案

这是因为 setState 是异步工作的。要获得您想要的行为,请将 console.log 作为回调传递给 setState 函数:

this.setState(
{ checked: !this.state.checked },
() => console.log(this.state.checked)
);

回调将在状态更新后调用。通过在回调之外调用 console.log(),javascript 将在状态更新之前运行 console.log。

这是因为无论如何,在进行任何异步调用之前都必须清除当前调用堆栈。

在这里阅读更多:https://developer.mozilla.org/en-US/docs/Glossary/Call_stack#:~:text=A%20call%20stack%20is%20a,from%20within%20that%20function%2C%20etc .

关于javascript - React 复选框 - Onchange 复选框,第一次未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62423713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com