2015-10-31 2 views
1

Я пытаюсь выяснить, как настроить редуктор для свойства в моем дереве состояний, которое создается из пользовательских событий.Назначение редуктора для свойства динамического хранилища

Мое состояние дерева выглядит следующим образом:

{ 
    session: { session object }, 
    dashboard: { 
    id: 'id001', 
    charts: { 
     'cid001': { dimensions: { ... }, more objects... }, 
     'cid002': { dimensions: { ... }, more objects... } 
    } 

    } 
} 

Новые charts свойства приходят через Redux, когда пользователь нажимает на кнопку Add Chart. Ключ установлен на идентификатор диаграммы, cid.

В настоящее время я использую combineReducers() для установки дерева редуктора.

import session from './session'; 
import charts from './charts'; 

const rootReducer = combineReducers({ 
    session, 
    dashboard: combineReducers({ 
    charts 
    }); 
}); 

Я могу установить такие редукторы, если я знаю имена свойств раньше времени. Тем не менее, я бы хотел избежать массивного редуктора для свойства charts, так как каждая диаграмма внутри него может содержать до 20 объектов, требующих уменьшения, dimensions - всего лишь один пример.

Есть ли способ установить редуктор для charts['cidxxx'].dimensions и других дополнительных свойств? Существуют ли эти символы? Есть предположения?

ответ

0

Распространение объектов было бы хорошо для чего-то подобного.

function chartsReducer(state, {payload}) { 
    const {cid} = payload; 
    const currentChart = state[cid] || {}; 
    return {...state, [cid]: {...currentChart, ...payload}}; 
} 

Если вы хотите идти глубже, чем с точки зрения собственности деревьев, может быть, стоит подумать о том, как изменить форму ваших данных, чтобы соответствовать, как вы используете его.

Смежные вопросы