Я работаю над приложением React/Redux и по большей части все работает плавно.Правильное возвращение вложенного состояния с Object.assign
По сути, это приложение TODO, который имеет категоризации, построенные в.
У меня возникли проблемы должным образом возвращающуюся полное существующее положение в моем редукторе, когда пользователь добавляет ToDo-элемент внутри категории.
Redux состояние перед тем, как направить действие ADD_ITEM выглядит следующим образом:
{
items: {
"HOME": [["Do laundry", "High Priority"],["Feed kids", "Low priority"] ],
"WORK": [["Get promotion", "High priority"],["Finish project", "Medium priority"] ],
"BOTH": [["Eat better", "Medium priority"],["Go for a run", "High priority"] ],
},
settings: {
Test: "test"
}
}
Пользователь переходит к категории (готовые, не реализовали их создания еще) и может создать новый todo- элемент с именем и приоритетом. Это отправляет действие, которое возвращает массив, например [category, name, priority].
В настоящее время в моем редукторе у меня есть он, где он успешно добавляет элемент, но он освобождает/перезаписывает все существующие категории.
Моего редуктор выглядит следующим образом:
case types.ADD_ITEM:
let cat = action.payload[0];
let name = action.payload[1];
let priority = action.payload[2];
return Object.assign({}, state, { items: { [cat]: [...state.items[cat], [name, priority]]}});
Я попытался создать новый объект первый со всеми совмещенными деталями, как так:
let combinedItems = Object.assign({}, state.items, { [cat]: [...state.items[cat], action.payload] });
Если я console.log вышеуказанные combinedItems, Я получаю точный объект, который хочу, чтобы объекты были. Тем не менее, я изо всех сил стараюсь вернуть конечный объект, восстановленный редуктором, чтобы отразить это.
Когда я пробовал что-то вроде ниже, у меня есть объект, который содержал sharedItems как отдельный ключ внутри элементов.
return Object.assign({}, state, { items: { combinedItems, [cat]: [...state.items[cat], [name, priority]]}});
Может ли кто-нибудь помочь мне получить мое окончательное состояние редукции, чтобы содержать все существующие категории/предметы + добавленный пользователем? Я очень благодарен за помощь.
Вы говорите, что ваше начальное состояние имеет ключи '' todos' и settings', но позже вы используете '' 'деталей и settings' нет ... что на самом деле происходит? – azium
'Object.assign' не делает глубоких расширений. – Bergi
@azium: Извинения. Я изменил некоторые имена прямо перед тем, как опубликовать это, и это осталось от предыдущего. Должно быть правильным сейчас. – intoxxx