国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

詞匯表

2018-02-24 15:28 更新

詞匯表

這是有關Redux中的一些核心概念的詞匯表,以及他們的類型簽名。這些類型使用了 流標注法進行記錄。

State

type State = any;

State (也叫 state tree) 是一個寬泛的概念,但是在 Redux API 中它通常與被 store 所管理的,可以被 getState() 返回的,單獨 state 值相關。 它表示了一個 Redux應用的全部狀態(tài),通常為一個多層嵌套的對象。

約定俗成,頂層 state 為一個對象,或幾個像 Map 那樣的鍵-值集合,當然是任意類型的話也成。當然,你仍然可以盡可能保持狀態(tài)的串行化。不要把什么都放進去導致無法容易地轉換成 JSON。

Action

type Action = Object;

Action 是一個用以表示要改變的 state 的意圖的普通對象。Action 是將數據拿到 store 里的唯一方法。無論是 UI 事件,網絡回調,還是其他諸如 WebSocket 之類的其他源,任何數據都或多或少的被 dispatch 成 action。

約定俗成,action 應該有一個 type 域指明了需要被演算的 action 類型。Type 可以被定義為常數從其他 module 中導入。比起用 Symbols 表示 type 使用 String 是更好的方法因為 string 是可被串行化的。

除了 type之外,action 對象的結構其實完全取決于你自己。如果你感興趣的話,請參考 Flux Standard Action 作為如何組織 actions 的建議。

還有就是請看后面的 異步 action。

Reducer

type Reducer<S, A> = (state: S, action: A) => S;

Reducer (也叫 reducing function) 是一個接受累積運算和一個值,返回新的累積函數的函數。用來把一個集合 reduce 到一個單獨值。

Reducer 并不是 Redux 特有的——它是函數式編程中的一個基本概念。甚至大部分的非函數式語言比如 JavaScript,都有一個內建的 reduce API。在 JavaScript 中的話是 Array.prototype.reduce().

在 Redux 中,累計運算的結果是個 state 對象,被累積的值就是 action。Reducer 由上一個 state 和一個 action 計算得到一個新 state。它必須是 純函數 也就是由完全相同的輸入會返回完全相同的輸出。它應該是沒有副作用的。這使得一些很棒的功能諸如熱重載和時間旅行成為可能。

Reducer 是 Redux 之中最重要的概念。

不要在 reducer 中有 API 調用

dispatch function

type BaseDispatch = (a: Action) => Action;
type Dispatch = (a: Action | AsyncAction) => any;

一個 dispatching function (或者簡單點叫 dispatch function) 是一個接收一個 action 或者異步 action的函數,它可以或不可以分發(fā)一個或多個 action 到 store。

我們必須搞清 dispatch function 和由沒有 middleware 的 store 實例提供的 base dispatch function 其中的區(qū)別。

Base dispatch function 總是 同步發(fā) action 給 store 的 reducer,以及由 store 返回的上一個 state 計算出新 state。它期望 actions 會是一個準備好被 reducer 消費掉的普通對象。

Middleware 封裝了base dispatch function。它允許了 dispatch function 處理 action 之外的 異步 action。 middleware 可以被變形,延遲,忽略,以及其他在將 action 或異步 action 傳遞給下一個 middleware 之前作出解釋。獲取更多信息請往后看。

Action Creator

type ActionCreator = (...args: any) => Action | AsyncAction;

Action Creator 很簡單,就是一個創(chuàng)建 action 的函數。別把這兩個概念搞混。Action 是一個信息的負載,而 action 創(chuàng)建者是一個創(chuàng)建 action 的工廠。

調用 action creator 只會生產出 action,但不分發(fā)。你需要調用 store 的 dispatch function 才會真正引起變化。有時我們講 bound action creator 意味著函數調用 action creator并立即將結果分發(fā)給一個特定的 store 實例。

如果 action 創(chuàng)建者需要讀取當前狀態(tài)、做出 API 調用、或引起諸如路由變位等副作用,應該返回一個 異步 action 而不是 action。

異步 Action

type AsyncAction = any;

異步 action 是一個發(fā)給分發(fā)函數,但還沒有準備好被 reducer 消費的值。它會在被發(fā)往 base dispatch() function 之前,被 middleware 變?yōu)橐粋€或一組 action。異步 actions 可以有多個 type,取決于使用的 middleware。通常為 Promise 或者 thunk 之類的異步原生,雖然沒有被馬上傳給 reducer,但是操作一旦完成就會觸發(fā) action 分發(fā)。

Middleware

type MiddlewareAPI = { dispatch: Dispatch, getState: () => State };
type Middleware = (api: MiddlewareAPI) => (next: Dispatch) => Dispatch;

Middleware 是一個高階函數,它將 dispatch function 組合并返回一個新的 dispatch function。它通常將 異步 actions 變?yōu)?actions。

Middleware 是使用了復合函數的可構建的。它可在 action 日志,表現(xiàn)副作用例如路由,或將異步 API 調用變?yōu)橐唤M同步 actions。

請見 applyMiddleware(...middlewares) 獲取有關 middleware 的詳細內容。

Store

type Store = {
  dispatch: Dispatch;
  getState: () => State;
  subscribe: (listener: () => void) => () => void;
  getReducer: () => Reducer;
  replaceReducer: (reducer: Reducer) => void;
};

Store 是一個承載有應用 state tree 的對象。一個 Redux 應用中應當只有一個 Store,因為構建發(fā)生于 reducer 級。

請見完整的 store API reference 獲取更多細節(jié)。

Store Creator

type StoreCreator = (reducer: Reducer, initialState: ?State) => Store;

Store creator 是一個創(chuàng)建 Redux store 的函數。就像 dispatching function 那樣,我們必須分清由 createStore(reducer, initialState) 從 Redux 包中導出的 base store creator,和從 store enhancer 返回的 store creator。

Store enhancer

type StoreEnhancer = (next: StoreCreator) => StoreCreator;

Store enhancer 是一個高階函數,將 store creator 組合,返回一個新的強化過的 store creator。這與允許你使用可組合方式變更 store 接口的 middleware 有點相似。

Store enhancer 是與 React 中概念非常相同的高階 component, 通常也會被叫做 “component enhancers”。

因為 store 并非一個實例,而更像是幾個函數的集合普通對象。復制可以被簡單的創(chuàng)建或修改而不需變動原先的 store。在 compose 文檔中有一個示例演示了這種做法。

大多數時候你不可能去寫 store enhancer,但你會用得著 developer tools 提供的。它使得app對其發(fā)生無察覺的時間旅行變得可能。搞笑的是,Redux middleware 的實現(xiàn) 本身就是一個 store enhancer。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號