Я только начинаю с программирования и недавно написал свое первое приложение на React, и хотя оно работает, я не уверен, правильно ли я обрабатываю свое внутреннее состояние. Мой вопрос заключается в том, создает ли метод setState неизменяемую глубокую копию «prevState» или не обязательно? Чтобы показать пример:
menuAddRecHandler = () => {
this.setState((prevState) => {
const updatedState = {...prevState};
const dayInd = updatedState.menu.recipes.findIndex(item => item.dayNum === updatedState.menuInternal.currentDay);
updatedState.menu.recipes[dayInd].recList.push({
name: prevState.menuInternal.menuRecSelect,
portions: prevState.menuInternal.menuNumPortInput
});
return updatedState;
})
}
В моем обработчике я помещаю объект во вложенный массив объекта updatedState, который был скопирован из prevState оператором распространения. Теперь я знаю, что оператор распространения делает только поверхностную копию, но является ли prevState внутренне предоставленным методом setState также поверхностным, и означает ли это, что я фактически изменяю свое состояние напрямую, вызывая этот обработчик? Если так, как я могу решить эту проблему? Спасибо.