Мое состояние содержит поле «моды», которое представляет собой список объектов javascript, которое содержит поле «элементы», которое само является списком (для примера) строк:
state = {
mods: [
{
elements: [
'Element 1',
'Element 2'
],
...
},
...
],
....
}
Посредством combReducers я вырезал моды из остальной части состояния, получая сам список модов, а затем снова вырезая элементы из остальной части объекта мода.
const ElementReducer = function(state, action) {...}
const ModReducer = combineReducers({
elements: ElementReducer,
...
});
const reducer = combineReducers({
mods: ModReducer,
...
});
Проблема возникает, когдаЯ пытаюсь применить действия к списку элементов;следующее действие
const action = {
type: 'ADD_MOD_ELEMENT',
mod_id: 1
};
, очевидно, должно добавить в мод единственный элемент, имеющий, как id, 1, но в момент, когда я попадаю в ElementReducer, состояние представляет собой простой массив строк, без возможности понятьк какому моду он принадлежит.
Есть ли способ решить, вызывать ли редуктор для определенного объекта в зависимости от содержимого действия?
ИтакДо сих пор, как решения, я видел:
Нормализация состояния объекта;Я бы предпочел не делать этого, если возможно, поскольку текущая структура - это именно та, которую я использую для связи с моим REST API
Не создавайте ModReducer, а обрабатывайте все действия водна функция (это решение, которое я сейчас принимаю), но я не нахожу его удовлетворительным.