Хранилище Redux не обновляется при изменении свойства элемента массива - PullRequest
1 голос
/ 27 сентября 2019

У меня есть код ниже

case 'COMPLETE_TODO' :
state.todos[state.todos.findIndex((obj => obj.id == action.value))].status = "COMPLETED"
return {
   ...state,
   todos: state.todos
}

Мне кажется, что массив не воспринимается как измененный массив, потому что обновлено только свойство одного элемента.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 27 сентября 2019

Не изменять состояние , сделать копию состояния и затем выполнить операции с ним

case 'COMPLETE_TODO' :   
 return {
    ...state,
    todos: state.todos.map(obj=> ({...obj, status: obj.id == action.value ? "COMPLETED" : obj.status}))
 }

map создать новый массив, ... распространенный синтаксис создает неглубокую копию, если ваш объект глубже, чем на один уровень, то вы должны сделать глубокий клон,

Для глубокого клонирования вы можете использовать

 let deepCopy = JSON.parse(JSON.stringify(state.todos))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...