每次将复选框切换为 true 时,我都想更新一个数组。使用当前代码,如果我单击一个复选框,它将记录它是错误的。即使我刚刚更新了状态。 setState 是否只需要一些时间,就像 API 调用一样?这对我来说没有意义。
import React, {Component} from 'react';
class Person extends Component {
constructor(props) {
super(props);
this.state = {
boxIsChecked: false
};
this.checkboxToggle = this.checkboxToggle.bind(this);
}
checkboxToggle() {
// state is updated first
this.setState({ boxIsChecked: !this.state.boxIsChecked });
console.log("boxIsChecked: " + this.state.boxIsChecked);
if (this.state.boxIsChecked === false) {
console.log("box is false. should do nothing.");
}
else if (this.state.boxIsChecked === true) {
console.log("box is true. should be added.");
this.props.setForDelete(this.props.person._id);
}
}
render() {
return (
<div>
<input type="checkbox" name="person" checked={this.state.boxIsChecked} onClick={this.checkboxToggle} />
{this.props.person.name} ({this.props.person.age})
</div>
);
}
}
export default Person;
我试过 onChange 而不是 onClick。我觉得我已经在遵循我从 此处 和 此处 阅读的有关基本组件公式的建议。我将 Redux 用于其他值这一事实会影响什么吗?有没有办法只读取复选框是什么,而不是试图控制它? (复选框本身工作正常,DOM 会更新它是否被正确选中。)
原文由 Gabriel Kunkel 发布,翻译遵循 CC BY-SA 4.0 许可协议
setState() 确实没有立即反映出来:
在文档中阅读此处:
这里有一些实验
所以捕获事件并检查它可能会更好,而不是依赖于
this.setState()
类似的东西:和