combineReducers
- 所有未匹配到的 action,必须把它接收到的第一个参数也就是那个 state 原封不动返回。
- 永远不能返回 undefined。当过早 return 时非常容易犯这个错误,为了避免错误扩散,遇到这种情况时 combineReducers 会抛异常。
- 如果传入的 state 就是 undefined,一定要返回对应 reducer 的初始 state。根据上一条规则,初始 state 禁止使用 undefined。使用 ES6 的默认参数值语法来设置初始 state 很容易,但你也可以手动检查第一个参数是否为 undefined。
虽然 combineReducers 自动帮你检查 reducer 是否符合以上规则,但你也应该牢记,并尽量遵守。即使你通过 Redux.createStore(combineReducers(...), initialState) 指定初始 state,combineReducers 也会尝试通过传递 undefined 的 state 来检测你的 reducer 是否符合规则。因此,即使你在代码中不打算实际接收值为 undefined 的 state,也必须保证你的 reducer 在接收到 undefined 时能够正常工作。
在 reducer 层级的任何一级都可以调用 combineReducers。并不是一定要在最外层。实际上,你可以把一些复杂的子 reducer 拆分成单独的孙子级 reducer,甚至更多层。
compose
这是函数式编程中的方法,为了方便,被放到了 Redux 里。
当需要把多个 store 增强器 依次执行的时候,需要用到它。
bindActionCreators(actionCreators, dispatch)
把一个 value 为不同 action creator 的对象,转成拥有同名 key 的对象。同时使用 dispatch
对每个 action creator 进行包装,以便可以直接调用它们。
react-redux
- <Provider store>
- connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
mapStateToProps 可以结合 reselect 使用;
mapDispatchToPops 可以结合 bindActionCreator 使用
网友评论