美文网首页
store的拆分和整合

store的拆分和整合

作者: 灯光树影 | 来源:发表于2018-10-20 15:40 被阅读0次

一、作用

在一个项目中,组件可以有许多个,而每个组件都应该自己的store和reducer。如果把整个项目所有组件的store和reducer都放在一个文件中,文件会显得臃肿,不利于维护。

二、reducer的拆分

假如原本项目的结构是:

  • store
    • index.js
    • reducer.js
  • Component
    • Header
    • Article

组件Header,Article的state都存在根目录的store中,那么store会显得臃肿,而且Header,Article也显得不那么模块化。
现在将store拆分到各个组件中,目录结构是:

  • store
    • index.js
    • reducer.js
  • Component
    • Header
      • store
        • index.js
        • reducer.js
    • Article
      • store
        • index.js
        • reducer.js

在整合时,需要用到redux-immutable,要先安装:

npm install redux-immutable

在组件各自的reducer.js中创建各自的reducer,比如:

const defaultState = {
  // ...
};
export default (state = defaultState, action) => {
  // ...
}

然后,在组件中store的index.js导出各自的reducer

import reducer from './reducer';
export { reducer };

最后在根目录中的store/reducer.js整合reducer

import { combineReducers } from 'redux-immutable'
import { reducer as headerReducer } from './Component/Header/store';
import { reducer as articleReducer } from './Component/Article/store';
// 整合reducer
const reducer = combineReducers({
    header: headerReducer,
    article: articleReducer
});
export default reducer;

至此,reducer拆分完成。

三、拆分后的使用

  • 获取state
    // 比如在Header组件
 // ... 使用了react-redux和immutable
const mapStateToProps = (state) => ({
  todoList: state.get(['header', 'todoList']), // 在header下获取todoList
})
  • 改变state(在reducer.js)
// ...
export default (state = defaultState, action) => {
  switch(action.type){
    case 'add_item': {
      const todoList = state.get('todoList').toJS();
      todoList.push(action.value);
      return state.set('todoList', fromJS(todoList));
    };
    // ...
  }
} 

相关文章

  • store的拆分和整合

    一、作用 在一个项目中,组件可以有许多个,而每个组件都应该自己的store和reducer。如果把整个项目所有组件...

  • 感悟六十一

    读《成交从异议开始》, 一,把价值整合在一起,把价格拆分成小数 价值整合,价格拆分。整体价格小于单项价格合计。 1...

  • lipo命令的用法

    序言:lipo是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。 lipo -...

  • lipo常用的命令:查看,合并,移除,瘦身

    lipo相关命令可以查看cpu架构, 提取特定架构,整合和拆分库文件。 查看:lipo -info xxxx.fr...

  • iOS file lipo命令

    lipo 是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。 查看信息,支持的...

  • 2017-3-14_工作报告

    工作内容 分析项目src目录结构 vuex modules 目录 存放拆分的store模块 actions.js...

  • lipo命令的用法

    参考这篇文章 lipo是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。-li...

  • lipo

    lipo是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。如果您的产品不会适用...

  • 关于将react-router 与 redux整合

    why react-router 与 redux的整合可以帮助我们实现: 将 router 的数据与 store ...

  • PMP项目管理的十个成语

    未雨绸缪(风险、计划) 防微杜渐(监控、及时纠正、回归计划) 资源集成(整合、采购)拆分、解决冲突 恰到好处(范围...

网友评论

      本文标题:store的拆分和整合

      本文链接:https://www.haomeiwen.com/subject/ttlmzftx.html