javascript - 如何为 Redux 中的一组组合 reducer 制定规则?
问题描述
我有两个看起来像这样的标准减速器
减速机1
const reducer1 = (state, action) => {
switch(action.type) {
case('clear'):
return {
...state,
reducer1property1: null
}
...<other cases>...
}
}
减速机2
const reducer2 = (state, action) => {
switch(action.type) {
case('clear'):
return {
...state,
reducer2property1: null
}
...<other cases>...
}
}
因此,如果我调度一个“清除”类型的操作,那么 property1 将在两个减速器中被清除。
我像这样组合减速器:
const combinedReducer = combineReducers({
Reducer1,
Reducer2
})
我的问题是:有没有办法做到这一点,而无需分别在每个减速器中编写“清晰”案例?例如,有没有办法添加“清除”案例combinedReducer
,以便我只能写一次?在我的实际应用程序中,有更多的减速器,所以我希望简化。
谢谢!
解决方案
这就是“高阶reducer”概念的用武之地。如果功能很常见,只需编写一次,然后使用该reducer“包装”任何其他需要该行为的reducer。在您的情况下,类似于:
const rootReducer = combineReducers({
reducer1 : closeable(reducer1),
reducer2 : closeable(reducer2),
});
有关更多详细信息,请参阅有关“重用 Reducer Logic”的 Redux 文档页面、有关The Power of Higher Order Reducers 的幻灯片以及有关Redux Reducers 和 Selectors的其他一些文章。
推荐阅读
- javascript - 从“navigationStart”开始时,性能用户计时 API 测量无法正常工作
- java - JAVA:mouseDragged getX 和 getY 原始数据不稳定
- bash - 如何找到当天登录的用户并提及他们登录的时间?
- swift - Swift 使用 Scrollview 重新创建 iPhone App Switcher 页面
- php - PHP 输出 HTML,更好的方法?
- node.js - 如何在 Node JS 中截取整个屏幕的屏幕截图?
- javascript - 使用 React Hooks 隐藏点击按钮
- javascript - 反应按钮,使用tone.Js,在第一次按键后中断,错误:setValueAtTime 的参数无效:{},2.2188208616780045
- github - Github:如何列出创建了 Private Access Tokens 的组织成员?
- c# - 拆分字段字符串并将每个值与字符串 linq c# 进行比较