Я ищу лучший способ сделать мою функцию handleSwitch + setState неизменной. Код, который у меня есть, работает, но он изменчив, и я не уверен, как сделать его неизменяемым. Все, что я пробовал, либо не работает, либо выдает синтаксическую ошибку.
Это мое инициализируемое состояние
this.state = {
contacts: [],
filteredContacts: [],
selected: [],
contactsSelection: {},
loading: false,
};
У меня есть простой <Switch />
комп, который запускает нижеприведенное, когда пользователь переключает переключатель.
handleSwitch = async (contact, added) => {
if (added) {
console.log('added', { contact, added });
return this.setState(prevState => ({
contactsSelection: {
...prevState.contactsSelection,
[contact.id]: contact,
},
}));
}
console.log('removed', { contact, added });
// const { contactsSelection } = this.state;
return this.setState(prevState => {
const existingSelection = { ...prevState.contactsSelection };
delete existingSelection[contact.id]; // <-- make immutable
return { contactsSelection: existingSelection };
});
};