我有候选人名单作为父母和候选人作为孩子。在候选列表上有一个全选输入,所以我将函数绑定到它以设置状态,如果候选被选中并将该状态传递给孩子。该部分有效,但这些输入本身不可变,仅由父级 Select All 可以更改。
候选列表组件(父):
class CandidateList extends React.Component {
constructor(props) {
super(props);
this.state = {
candidateList: null,
candidateSelected: false
}
}
onSelectCandidatesClick() {
this.setState({
candidateSelected: !this.state.candidateSelected
});
}
render() {
return (
<div className="CandidateList">
<div className="__selection">
<input className="checkbox" type="checkbox" id="selectAll" onClick={() => this.onSelectCandidatesClick()}/>
<label htmlFor="selectAll"><span id="__label">Select All</span></label>
</div>
</div>
);
}
}
候选组件(子):
class Candidate extends React.Component {
constructor(props) {
super(props);
this.state = {
candidateSelected: false
}
}
componentWillReceiveProps(nextProps) {
this.setState({
candidateSelected: nextProps.selectCandidate
});
}
render() {
return (
<div className="Candidate">
<div className="__select">
<input className="checkbox" type="checkbox" id="candidate" data-candidate-id={this.props.candidateData.id} checked={this.state.candidateSelected} />
<label htmlFor="candidate"></label>
</div>
</div>
);
}
}
感谢所有建议和帮助。
原文由 liborza 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以根据 props.candidateSelected(如果全选是从父项中选择的)或基于状态(如果复选框是从子项中选择的)来设置子项的选中值
您必须添加一个 onclick 事件处理程序,该事件处理程序将在单击子项中的复选框时更改状态