Redux 学习笔记

Action 就是一个描述“发生了什么”的普通对象。比如:

1
{ type: 'LIKE_ARTICLE', articleId: 42 }

reducer 是一个纯函数,接收旧的 state 和 action,返回新的 state。

1
(previousState, action) => newState

永远不要在 reducer 里做这些操作:

  • 修改传入参数;
  • 执行有副作用的操作,如 API 请求和路由跳转;
  • 调用非纯函数,如 Date.now() 或 Math.random()。

也就是说,请求是放在 Action 里面进行的,当 Action 内部进行玩异步请求完成后,可通过 dispatch 发送完成请求的 Action,让 reducer 收到,而 reducer 的作用就是返回新的带上了请求返回数据的 state,从而达到通知绑定该state 的组件

combineReducers() 所做的只是生成一个函数,这个函数来调用你的一系列 reducer,每个 reducer 根据它们的 key 来筛选出 state 中的一部分数据并处理,然后这个生成的函数再将所有 reducer 的结果合并成一个大的对象。

Redux 应用中数据的生命周期遵循下面 4 个步骤:

1. 调用 `store.dispatch(action)`。
2. Redux store 调用传入的 `reducer` 函数。`Store` 会把两个参数传入 `reducer`: 当前的 state 树和 `action`。
3. 根 reducer 应该把多个子 reducer 输出合并成一个单一的 state 树。Redux 原生提供 `combineReducers()` 辅助函数
4. Redux store 保存了根 reducer 返回的完整 state 树。