注意點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:
- 某個組件的狀態,需要共享
- 某個狀態需要在任何地方都可以拿到
- 一個組件需要改變全局狀態
- 一個組件需要改變另一個組件的狀態