javascript - 如何使用 React for Switch Buttons 从 React-Bootstrap 在地图中设置 onchange?
问题描述
我想为我在函数onChange
中创建的每个复选框设置事件。map
不幸的是,如果我单击一个复选框,我得到了正确的目标 ID,但所有复选框都不是被单击的复选框。那么我该如何处理呢?
constructor(props) {
super(props);
this.state = {
user: [],
checked: ''
}
this.handeClick = this.handeClick.bind(this);
}
handeClick(e) {
console.log("Wurde geklickt: " + e.target.id);
const item = e.target.name;
const isChecked = e.target.checked;
this.setState({ checked: isChecked });
}
[...]
render() {
return (
<>
<Container fluid className="con">
<Row className="justify-content-md-center">
{
this.state.user.map(user => {
return (
<Col md="3" key={user.SD_Emplid}>
<div className="card">
{user.SD_Anrede} <h2>{user.SD_Vorname}</h2> <h4>{user.SD_Vorname}</h4>
<hr></hr>
<Form.Check
onChange={this.handeClick}
checked={this.state.checked}
className="checkBoxCard"
type="switch"
id={user.SD_Emplid}
label=""
/>
</div>
</Col>
)
})
}
</Row>
</Container>
</>
)
}
}
解决方案
您检查的状态是布尔类型。每个项目将只检查检查是否为真,如果您只标记一个,则所有项目都将被检查。
可能您需要更改您的状态、检查功能以及项目是否被检查。像这样:
constructor(props) {
super(props);
this.state = {
user: [],
checked: []
}
this.handeClick = this.handeClick.bind(this);
}
handeClick(e) {
console.log("Wurde geklickt: " + e.target.id);
const checked = this.state.checked;
if (checked.includes(e.target.id)) {
newChecked = checked.filter(id => id !== e.target.id)
this.setState({ checked: newChecked })
} else {
checked.push(e.target.value);
this.setState({ checked })
}
}
[...]
render() {
const { checked } = this.state;
return (
<>
<Container fluid className="con">
<Row className="justify-content-md-center">
{
this.state.user.map(user => {
return (
<Col md="3" key={user.SD_Emplid}>
<div className="card">
{user.SD_Anrede} <h2>{user.SD_Vorname}</h2> <h4>{user.SD_Vorname}</h4>
<hr></hr>
<Form.Check
onChange={this.handeClick}
checked={checked.includes(user.SD_Emplid)}
className="checkBoxCard"
type="switch"
id={user.SD_Emplid}
label=""
/>
</div>
</Col>
)
})
}
</Row>
</Container>
</>
)
}
}
推荐阅读
- c# - Modify content of requested file in ASP.NET core 2.0
- r - 在 R 中的 svyplot() 中用颜色填充气泡(调查包)
- routes - Angular 5 issue with a named outlet children component (reprise)
- java - Cannot Disable Spring Security in Spring Boot 2.0.1
- r - 用HAC估计器替换OLS的std.error,并使用stargazer打印表格
- php - 每次刷新页面时,PHP表单都会在数据库中添加空白行
- xslt - Getting all unused variables in an XSL stylesheet
- oracle - 如何在oracle中使用插入触发器之前更改表的旧数据?
- shell - 如何从输入的 avro 文件创建“.avsc”文件?
- jenkins - 如何将文件作为参数从不同机器传递给詹金斯