В приведенном выше коде вы не изменяете состояние, поскольку Map
возвращает новый массив, а также для идентификатора, который соответствует, вы закрываете объект и обновляете его.
Единственное, что другой объект todo все еще содержит ту же ссылку, но это нормально.
И даже если text
является объектом, который вы в настоящее время назначаете для него новую ссылку, и если вы хотите объединить, вы можете использовать синтаксис распространения, но из того, что кажется вашим соглашением об именах text
, кажется, string
, который является javascript Immutable
case EDIT_TODO:
return state.map(todo => {
if(todo.id === action.payload.id){
return {
...todo,
text: action.payload.text
}
}
return todo;
});