这是两个州/减少者之间数据共享的合理解决方案吗?
//combineReducers function coreReducer(state = {}, action){ let filtersState = filters(state.filters, action); let eventsState = events(state.events, action, { filters: filtersState}); return { events: eventsState, filters : filtersState}; } export const rootReducer = combineReducers( { core : coreReducer, users } );
如果是这样,如果对同一个调度事件和第二个减少函数的回答都取决于第一个的新状态,那么如何保证执行reducer函数的顺序呢?
假设我们SET_FILTER
在过滤器Store中调度追加到activeFilters集合的事件,然后根据activeFilters值更改事件Store中项目的可见性.
//ActiveFilters reducer function filtersActions(state = {}, action){ switch (action.type) { case SET_FILTER: return Object.assign({}, state, { [action.filterType]: action.filter }) case REMOVE_FILTER: var temp = Object.assign({}, state); delete temp[action.filterType]; return temp; case REMOVE_ALL_FILTERS: return {}; default: return state } }
我想我找到了答案 - 计算派生数据 - 重新选择
http://redux.js.org/docs/recipes/ComputingDerivedData.html