我们应该使用多个联合减速器吗?

时间:2017-08-04 04:18:53

标签: reactjs redux react-redux

我有三个减速器

  • 主页
  • 清单
  • 详细

我有三个以上的联合减速机。但我想将项目结构划分为多个减速器。在项目中使用多个联合减速器是一种好习惯吗?

2 个答案:

答案 0 :(得分:5)

是的,您的应用中可以有多个combineReducers,您可以在顶层组合缩减器Home , Listing and Detail,甚至可以将每个缩减器拆分为多个并将它们合并为一个。

根据Redux docs

  

您可以在reducer层次结构的任何级别调用combineReducers。   它不必发生在顶部。事实上,你可以再次使用它   把那些过于复杂的儿童减少者分成独立的   孙子,等等。

有关combineReducer的更多说明:

  

随着您的应用变得越来越复杂,您需要分配缩减   功能分成独立的功能,每个功能管理独立的部分   国家。

     

combineReducers辅助函数转换其值为的对象   将不同的还原功能集成到单个还原功能中即可   传递给createStore

     

生成的减速器调用每个儿童减速器,然后收集它们   结果成一个状态对象。状态对象的形状   匹配传递的Redurs的键。

答案 1 :(得分:0)

是的,您可以组合使用多个reducer并将其用作一个商店,

  1. 首先,应将所有reducer导入一个新文件。然后,将所有减速器与联合减速器技术结合起来,像这样:

    从'redux'导入{CombineReducers}; 从'* / **'导入{Home,Listing,Detail};

    const rootReducer = CombineReducers({ 家, 清单, 详情 })

    导出默认的rootReducer

  2. 其次,将新文件导入到商店文件中,然后使用组合减速器创建商店

    从'redux'导入{createStore} 从'* / combinestores'导入rootReducer

    const store = createStore(rootReducer) console.log(store.getState())最佳

    导出默认存储

  3. 最后,您可以在容器中像这样使用商店: (但在此之前,您应该确保将商店作为道具发送给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)(功能名称);