我有三个减速器
我有三个以上的联合减速机。但我想将项目结构划分为多个减速器。在项目中使用多个联合减速器是一种好习惯吗?
答案 0 :(得分:5)
是的,您的应用中可以有多个combineReducers
,您可以在顶层组合缩减器Home , Listing and Detail
,甚至可以将每个缩减器拆分为多个并将它们合并为一个。
根据Redux docs :
您可以在reducer层次结构的任何级别调用
combineReducers
。 它不必发生在顶部。事实上,你可以再次使用它 把那些过于复杂的儿童减少者分成独立的 孙子,等等。
有关combineReducer
的更多说明:
随着您的应用变得越来越复杂,您需要分配缩减 功能分成独立的功能,每个功能管理独立的部分 国家。
combineReducers
辅助函数转换其值为的对象 将不同的还原功能集成到单个还原功能中即可 传递给createStore
。生成的减速器调用每个儿童减速器,然后收集它们 结果成一个状态对象。状态对象的形状 匹配传递的Redurs的键。
答案 1 :(得分:0)
是的,您可以组合使用多个reducer并将其用作一个商店,
首先,应将所有reducer导入一个新文件。然后,将所有减速器与联合减速器技术结合起来,像这样:
从'redux'导入{CombineReducers}; 从'* / **'导入{Home,Listing,Detail};
const rootReducer = CombineReducers({ 家, 清单, 详情 })
导出默认的rootReducer
其次,将新文件导入到商店文件中,然后使用组合减速器创建商店
从'redux'导入{createStore} 从'* / combinestores'导入rootReducer
const store = createStore(rootReducer) console.log(store.getState())最佳
导出默认存储
最后,您可以在容器中像这样使用商店: (但在此之前,您应该确保将商店作为道具发送给Containers)
const mapStateToProps =状态=> {
return{
*name of your var* : state.Home.*,
*name of your var* : state.Detail.* /*then you can use this var as props anywhere you need*/
}
}
const mapDispatchToProps =调度=> { 返回{
*name of your var* : () => dispatch ( *name of your func*()),
*name of your var* : () => dispatch ( *name of your func*())
}
}
导出默认连接(mapStateToProps,mapDispatchToProps)(功能名称);