注意点1: Action
本质上是 JavaScript 普通对象
注意点2: Reducers
指定了应用状态的变化如何响应 actions 并发送到 store 的,
记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。
注意点3: Store
就是把它们联系到一起的对象。Store 有以下职责:
维持应用的 state;
- 提供 getState() 方法获取 state;
- 提供 dispatch(action) 方法更新 state;
- 通过 subscribe(listener) 注册监听器;
- 通过 subscribe(listener) 返回的函数注销监听器。
注意点4:
异步 action 创建函数
最后,如何把 之前定义 的同步 action 创建函数和网络请求结合起来呢?标准的做法是使用 Redux Thunk 中间件。要引入 redux-thunk 这个专门的库才能使用。我们 后面 会介绍 middleware 大体上是如何工作的;目前,你只需要知道一个要点:通过使用指定的 middleware,action 创建函数除了返回 action 对象外还可以返回函数。这时,这个 action 创建函数就成为了 thunk。
注意点5:
当 action 创建函数返回函数时,这个函数会被 Redux Thunk middleware 执行。这个函数并不需要保持纯净;它还可以带有副作用,包括执行异步 API 请求。这个函数还可以 dispatch action,就像 dispatch 前面定义的同步 action 一样。
我们仍可以在 actions.js 里定义这些特殊的 thunk action 创建函数。
注意点6:
<Provider store> 使组件层级中的 connect() 方法都能够获得 Redux store。
正常情况下,你的根组件应该嵌套在 <Provider> 中才能使用 connect() 方法。
注意点7:
从组件的角度看,以下几种情况可以使用redux:
- 某个组件的状态,需要共享
- 某个状态需要在任何地方都可以拿到
- 一个组件需要改变全局状态
- 一个组件需要改变另一个组件的状态