Итак, вы хотите обновить состояние.
Но для того, чтобы это сработало, чтобы реакция не пропустила повторную визуализацию, вам нужно вернуть новый объект. Если вы вернете один и тот же объект, react будет сравнивать новый и старый объект, заметить, что это один и тот же неглубокий объект, и пропустить рендеринг.
Итак, чтобы создать новый объект, вы можете сделать несколько вещей, но Самый большой - это оператор распространения: ...
. Он разбирает объект и возвращает все значения внутри. Это работает для массивов, строк и объектов.
Итак, возвращая все записи в новый объект, вы создаете неглубокую копию: то же содержимое, но новую ссылку на объект.
Итак, что происходит здесь: :
- Вы создаете новый объект
return {}
- Вы заполняете его текущим объектом, добавляя все записи из currentState в новый объект состояния
{...currentState}
. Это дает новый объект, но все записи копируются в новый объект. И, наконец, вы отменяете запись, которую хотите переопределить. Будет выбран последний экземпляр. Это будет выглядеть так:
return{
otherEntries,
currentUser: currentState.currentUser,
currentUser: action.payload
};