Redux 如何抽象具有相似操作的多个还原器

Redux 如何抽象具有相似操作的多个还原器,redux,react-redux,Redux,React Redux,我的应用程序中有多个实体。每个实体相互独立。因此,我为每个实体创建了一个单独的减速机,并在创建存储时将所有减速机组合在一起 每个条目都有一些常见的操作,如 1) 设置项目列表 2) 添加单个项目 3) 更新单个项目 4) 删除单个项目 所以在每一个减速器中,我都有相同的代码重复 设置列表 返回{ ……国家, 名单:{ …state.list, …action.list } }; 添加单个项目 返回{ ……国家, 名单:{ …说明项目, [action.item.id]:{ …state.lis

我的应用程序中有多个实体。每个实体相互独立。因此,我为每个实体创建了一个单独的减速机,并在创建存储时将所有减速机组合在一起

每个条目都有一些常见的操作,如

1) 设置项目列表 2) 添加单个项目 3) 更新单个项目 4) 删除单个项目

所以在每一个减速器中,我都有相同的代码重复

设置列表

返回{
……国家,
名单:{
…state.list,
…action.list
}
};
添加单个项目

返回{
……国家,
名单:{
…说明项目,
[action.item.id]:{
…state.list[action.item.id],
…行动.项目
}
}
};
..更新操作和删除操作的类似代码

是否有一种方法可以将此代码抽象出来,并为每个实体保留一个单独的缩减器?

您可以创建,它将负责为您创建缩减器:

const createEntityReducer=constants=>(state={},action)=>{
开关(动作类型){
case constants.set:
返回{
……国家,
名单:{
…state.list,
…action.list
}
};
case.add:
返回{
……国家,
名单:{
…说明项目,
[action.item.id]:{
…state.list[action.item.id],
…行动.项目
}
}
};
违约:
返回状态;
}
};
基本上,我们正在创建一个函数,该函数将接受
常量
对象并返回新的reducer,它将在调度相应的操作时更改状态

接下来,您可以根据需要创建尽可能多的类似减速器:

const entityReducer=createEntityReducer({
设置:“设置动作类型”,
添加:“添加动作类型”
});
const EntityReducer 2=createEntityReducer({
设置:“设置动作类型2”,
添加:“添加动作类型2”
});
const store=createStore(
组合传感器({
实体教育者,
实体导出器2
})
);
如果要在这些缩减器中处理自定义操作,可以为此创建另一个更高阶的缩减器:

constwithcustomactions=(reducer)=>(state,action)=>{
//这就是状态,从初始还原返回
const nextState=减速机(状态、动作);
开关(动作类型){
案例“定制行动”:
返回{
…下一州,
关键:行动。价值
};
违约:
返回下一状态;
}
}
const entityReducer 3=带有自定义操作(entityReducer);

谢谢1ven,如果我们以这种方式创建缩减器,我如何添加特定于该实体缩减器的其他操作,有没有一种简单的方法来扩展它?@hashbytes是的,很简单。我已经更新了答案