Redux 和 React 之间没有关系。Redux 支持 React、Angular、Ember、jQuery 甚至纯 JavaScript。
reducer 就是一个纯函数,接收旧的 state 和 action,返回新的 state。
只要传入参数相同,返回计算得到的下一个 state 就一定相同。没有特殊情况、没有副作用,没有 API 请求、没有变量修改,单纯执行计算。
时刻谨记永远不要在克隆 state 前修改它。
使用 action 来描述“发生了什么”,使用 reducers 来根据 action 更新 state 的用法。Store 就是把它们联系到一起的对象。Store 有以下职责:
- 维持应用的 state;
- 提供 getState() 方法获取 state;
- 提供 dispatch(action) 方法更新 state;
- 通过 subscribe(listener) 注册监听器;
- 通过 subscribe(listener) 返回的函数注销监听器。
Redux 应用只有一个单一的 store。
根 reducer 应该把多个子 reducer 输出合并成一个单一的 state 树。
Redux 原生提供combineReducers()辅助函数,来把根 reducer 拆分成多个函数,用于分别处理 state 树的一个分支
Redux store 保存了根 reducer 返回的完整 state 树。