Я думаю, вы хотите что-то подобное. В вашей коллекции пользователей вам нужно найти переключаемого, переключить клавишу isSelected
, а затем установить состояние. Клавиша checked
ищет user.isSelected
в вашем render
звонке;сначала его не нужно определять, так как undefined
будет иметь значение false.
class App1 extends React.Component {
constructor(props) {
super(props);
this.state = {
users: []
};
}
handleChange(user) {
// get the user id
const userId = user.id;
// check the state, if a user is selected, toggle it
this.setState(prevState => ({
users: prevState.users.map(usr => {
usr.id === userId
? { ...usr, isSelected: !usr.isSelected }
: usr;
})
}));
}
render() {
const { users } = this.state;
return (
<div>
{Array.isArray(users) &&
users.length &&
users.map((u, idx) => {
<div key={`${idx}-${u.id}`}>
<label htmlFor={`${idx}-${u.id}`}>{u.name}</label>
<input
type="checkbox"
checked={u.isSelected}
onChange={() => this.handleChange(u)}
/>
</div>;
})}
</div>
);
}
}