【发布时间】:2020-08-07 11:07:00
【问题描述】:
我有一组 3 个复选框和用于检查这 3 个复选框的主复选框。
- 当我选中所有 3 个复选框时,我希望 main 复选框被选中。
- 当我选中这 3 个复选框时,没有任何反应,但是当我取消选中其中一棵树时,main 复选框变为选中状态。
有人可以向我解释幕后实际发生的事情并帮助我以某种方式解决这个 React 状态的奥秘吗?谢谢!
这是一个代码片段:
state = {
data: [
{ checked: false, id: 1 },
{ checked: false, id: 2 },
{ checked: false, id: 3 }
],
main: false,
}
onCheckboxChange = id => {
const data = [...this.state.data];
data.forEach(item => {
if (item.id === id) {
item.checked = !item.checked;
}
})
const everyCheckBoxIsTrue = checkbox.every(item => item === true);
this.setState({ data: data, main: everyCheckBoxIsTrue });
}
onMainCheckBoxChange = () => {
let data = [...this.state.data];
data.forEach(item => {
!this.state.main ? item.checked = true : item.checked = false
})
this.setState({
this.state.main: !this.state.main,
this.state.data: data,
});
}
render () {
const checkbox = this.state.data.map(item => (
<input
type="checkbox"
checked={item.checked}
onChange={() => this.onCheckboxChange(item.id)}
/>
))
}
return (
<input type="checkbox" name="main" checked={this.state.main} onChange={this.onMainCheckBoxChange} />
{checkbox}
)
【问题讨论】:
标签: reactjs checkbox react-redux state react-state