代码: https://github.com/JanYLee/recruit-app/tree/demo/basic-redux

专注于状态管理

  • 用于状态管理, 和react解耦, 其他框架也可以使用
  • 单一状态, 单向数据流
  • 核心: store, state, action, reducer

主要流程:

  • 通过reducer来创建store, 保存所有状态, 记录state, 通过store.getState获取状态
  • 需要更改store时, 从组件里派发(dispatch)出一个行为(action), store.dispatch(action);
  • action和state由处理函数(reducer)拿到, 生成新的state, store.subscribe监听每次修改, 更新store

初始化store:

  1. import { createStore } from 'redux';
  2. // 1 新建store
  3. // 通过reducer生成
  4. // 根据老的state和action 生成新的state
  5. function counter (state=0, action) {
  6. switch(action.type) {
  7. case 'add':
  8. return state+1;
  9. case 'delete':
  10. return state-1;
  11. default:
  12. return 10;
  13. }
  14. }
  15. // 新建store
  16. const store = createStore(counter);
  17. const init = store.getState();
  18. console.log('init :', init); // init : 10

开始派发action和监听(subscribe)store变化:

  1. function listener() {
  2. const curStore = store.getState();
  3. console.log(`now store is ${curStore}`);
  4. }
  5. // 监听每次修改store
  6. store.subscribe(listener);
  7. // 派发事件 传递action
  8. store.dispatch({type: 'add'}); // now store is 11
  9. store.dispatch({type: 'add'}); // now store is 12
  10. store.dispatch({type: 'delete'}); // now store is 11