【发布时间】:2019-06-27 12:27:31
【问题描述】:
我正在创建基于对象数组的动态复选框,但我无法为其设置更改处理程序。我正在使用语义-ui-react 复选框。如何处理相应更改复选框的更改事件。
还有一个提交按钮,我需要获取已检查的项目。有人也可以帮我解决这个问题
我们将不胜感激
复选框渲染代码
let arr = [ {key: "Pending", text: "Pending", checked: false}
{key: "Approved", text: "Approved", checked: false}
{key: "Cancelled", text: "Cancelled", checked: false}
];
this.state ={ optionsArr: [] }
{this.state.arr.map((item: any, i: number) => (
<div className="menu-item" key={i}>
<Checkbox
name={item.text}
onChange={this.handleItemClick}
checked={item.checked}
label={item.text}
/>
</div>
))}
更改处理程序
handleItemClick = (event: React.FormEvent<HTMLInputElement>, data: any) => {
const i = this.state.optionsArr.findIndex(
(item: any) => item.text === data.name
);
const optionsArr = this.state.optionsArr.map((prevState: any, si: any) =>
si === i ? !prevState : prevState
);
this.setState({ optionsArr });
};
【问题讨论】:
-
可以添加整个文件吗?
-
第一次遍历 optionsArr 时,您在每个项目上使用
item.text。第二次循环时,如果si === i尝试返回!item。我不确定这是否有意义,认为您想返回{text: prevState.text, checked: !prevState.checked}
标签: javascript reactjs typescript ecmascript-6 semantic-ui-react