目标:
根据一些过滤器更新我喜欢的颜色。
环境:
有两个缩减器:filters
和colors
。
export function filters(state = {
noRed: false,
noBlack: false,
}, action) { ... })
export function colors(state = {
red: true,
black: true,
blue: true
}, action) { ... })
我想根据colors
更新filters
。我可以同时发送setFilter
和setColor
,但这不起作用,因为setColor
只有在filters
完全减少后才会发生。我也可以考虑将filters
和colors
组合在一起,但我希望将它们分开。
实现目标的最佳途径是什么?我真正需要的是如下:
export function colors(state = [], action) {
switch (action.type) {
case constants.SET_FILTER:
// assume I can access filters reducer here
var filters = filtersReducer
var colors = applyFilters(state.colors, filters)
return colors
case constants.SET_COLOR:
return action.colors
default:
return state
}
}
或者我可以在filters
缩减器内部发送一个动作,但这是一个反模式。