javascript - 如何在反应循环中设置动态复选框的状态?
问题描述
我正在循环加载复选框。我在设置动态复选框的状态时遇到了困难。
我正在循环加载复选框。我需要设置复选框的状态以使其工作。当我设置状态时,每个复选框都会被选中,所以请给我一个解决方案
组件初始化
const ChildComponent = props =>
<div key={"comp" + props.number} className="relay-team-list">
<div className="read-more">
<a href="#">Team {props.number} - Click to Rename</a>
</div>
{
props.members_arr.length > 0 ? (
props.members_arr.map((member, i) =>
member.position === props.number ? (
<div key={"members" + i} className="columns is-mobile list-item" id={"member" + props.number}>
<div className="column is-one-third">
<img src={require('../images/user.png')} />
</div>
<div className="column txt-mid-grey relay-team-list-text">
<p>{member.members_arr.member_name}</p>
<p></p>
<span className="check-icon"><input type="checkbox" value="checkedB"
checked={this.state.enabledCheckBox + i}
label={{ children: 'cardreader' + i }}
onChange={this.passMemberID}
/></span>
</div>
</div>
) : ''
)
) : ''
}
</div>;
功能
passMemberID = () => {
this.setState((prevState, props) => ({
enabledCheckBox: !prevState.enabledCheckBox
}), () => console.log(this.state.enabledCheckBox))
}
构造函数
constructor(props) {
super(props);
this.state = {
enabledCheckBox: false,
}
}
我需要为每个复选框设置不同的状态,这样我就可以一个一个地单击它们,现在所有的都被一次检查
解决方案
构造函数:
constructor(props) {
super(props);
this.state = {
checkBoxObj: {}
};
}
零件:
<input type="checkbox"
checked = {this.state.checkBoxObj[i] || false}
onChange={() => this.passMemberID(i)}
/>
功能:
passMemberID = (i) => {
this.setState({
checkBoxObj: {
...this.state.checkBoxObj, ...{[i]: !this.state.checkBoxObj[i]}
}
})
}
推荐阅读
- api - 使用 gitlab api 创建图形和表格
- r - 如何根据来自 renderUI 的输入对数据进行子集化
- c# - 在运行时访问 Unity 包版本
- node.js - node.js 和 mongodb 在现有数据库中按顺序递增 _id
- java - 为什么即使if语句为真,它也会重定向到假设在else子句中发生的页面(我觉得)
- python - 酸洗集子类引发不可散列的类型:“列表”
- python - 试图编写一个递归函数来获取列表中的唯一数字
- sql - 找到每个状态的最小重叠
- java - org.xml.sax.SAXParseException: 'GovernmentIDType' 已定义
- swift - 每次更改参数时使用新参数重新初始化类的实例