DVA基礎

一、 dva的API

1.?app = dva(opts):? ?創建應用,返回 dva 實例.

2.?app.use(hooks):?配置 hooks 或者注冊插件。(插件最終返回的是 hooks )

注:hooks包含

1111. onError((err, dispatch) => {})

effect執行錯誤或subscription通過done主動拋錯時觸發,可用于管理全局出錯狀態。


其他hooks可見:https://github.com/dvajs/dva/blob/master/docs/API_zh-CN.md#appusehooks



3.? app.model(model) :注冊 model,詳見#Model部分。

4.?app.unmodel(namespace)

取消 model 注冊,清理 reducers, effects 和 subscriptions。subscription 如果沒有返回 unlisten 函數,使用app.unmodel會給予警告??

5. app.router(({ history, app }) => RouterConfig): 注冊路由表。

6. app.start(selector?)

啟動應用。selector可選,如果沒有selector參數,會返回一個返回 JSX 元素的函數。、



二、 dva 中的 Model



model中的五個屬性:

1.?namespace:

model 的命名空間,同時也是他在全局 state 上的屬性,只能用字符串,不支持通過.的方式創建多層命名空間。

2.?state

初始值,優先級低于傳給dva()的opts.initialState。

3.?reducers

以 key/value 格式定義 reducer。用于處理同步操作,唯一可以修改state的地方。由action觸發。

格式為(state, action) => newState或[(state, action) => newState, enhancer]。

4.?effects

以 key/value 格式定義 effect。用于處理異步操作和業務邏輯,不直接修改state。由action觸發,可以觸發action,可以和服務器交互,可以獲取全局state的數據等等。

格式為*(action, effects) => void或[*(action, effects) => void, { type }]。

5.?subscriptions

以 key/value 格式定義 subscription。subscription 是訂閱,用于訂閱一個數據源,然后根據需要 dispatch 相應的 action。在app.start()時被執行,數據源可以是當前的時間、服務器的 websocket 連接、keyboard 輸入、geolocation 變化、history 路由變化等等。

格式為({ dispatch, history }, done) => unlistenFunction。

注意:如果要使用app.unmodel(),subscription 必須返回 unlisten 方法,用于取消數據訂閱。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容