I am creating dynamic checboxes based on an array of objects but I am unable to set change handlers for the same . I am using semantic-ui-react Checkboxes. How do I handle change events for the corresponding change checkboxes.
Also There is a submit button , I need to get items that are checked .Can someone help me with this too
Help would be appreciated
Checkbox render code
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>
))}
Change Handler
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 });
};
item.texton each item. The second time you loop through, ifsi === iyou try to return!item. I'm not sure that makes sense, think you want to return{text: prevState.text, checked: !prevState.checked}