2017-01-10 59 views

回答

0

的指南到終極版的API中間件

這樣做的好處庫是很多與發出HTTP請求時分派多個動作相關的樣板文件被照顧的。爲什麼異步Redux涉及調度多個操作?

代表與終極版動作

從終極版文檔的請求有狀態:

當你調用一個異步API,有兩個時間關鍵時刻:你開始的那一刻起電話,和當你收到答案(或超時)時。 我們首先需要定義與任何給定主題ID對外部資源進行異步調用相關聯的操作及其創建者。

有其表示API請求的承諾的三種可能的狀態:

  • 未決(請求製造)
  • 達到的(請求成功)
  • 拒絕(請求失敗 - 或超時)

使用redux-api中間件,我們創建一個動作並定義其他類型,然後由中間件本身調用。

入門與redux-api-middleware庫時,你應該記住的主要事情是:

  1. 使用正確的行動創造者的簽名和定義正確的有效載荷不同的子動作
  2. 使用中間件正確配置您的商店

這裏是一個自包含例如:

import { createStore, applyMiddleware, combineReducers } from 'redux'; 
import { apiMiddleware, CALL_API } from 'redux-api-middleware'; 
import reducer from './reducer'; 

const REQUEST = 'REQUEST'; 
const RECEIVE = 'RECEIVE'; 
const FAILURE = 'FAILURE'; 

const store = createStore(reducer, {}, 
    applyMiddleware(apiMiddleware) 
); 

const fetchAction ={ 
    [CALL_API]: { 
    endpoint: 'http://www.example.com', 
    method: 'GET', 
    types: [ 
     { 
     type: 'REQUEST', 
     payload: (action, state) => ({ action: state }) 
     }, 
     { 
     type: 'SUCCESS', 
     payload: (action, state, response) => { 
      return response 
     } 
     }, 
     'FAILURE' 
    ] 
    } 
} 

store.dispatch(fetchAction).then(res => { 
    console.log('success'); 
}).catch(e => { 
    console.log('failure'); 
}); 

根據承諾基於isomorphic-fetch庫用來發出HTTP請求的引擎蓋。這意味着redux api中間件返回承諾,當我們調用store.dispatch與redux-api-中間件認證的行動。

然後,我們可以通過鏈接.then和.catch來響應此請求的成功或失敗,並使用我們想要的任何自定義邏輯。