2016-03-02 12 views
8

ジェネリックリクエストサガが意味をなさないのだろうか?APIリクエストのreduxサガは意味がありますか?

ヘッダー、url、dataなどのすべての情報が含まれており、ヘッダーとベースURLをマージすると、アクションはREQUESTになります。 これは、fetchの要求に続いて、put(REQUEST_SUCCEEDED, json)にjsonペイロードを格納します。

const request = yield take(REQUEST) 
const { url, data, headers } = request 
try { 
    if (request.startAction) { 
    yield put(request.startAction) 
    } 
    const json = yield call(api.fetch, url, data, headers) 
    yield put({...request.successAction, json}) 
} catch (error) { 
    yield put({...request.errorAction, error}) 
} 

私はそれを理解するように、これは一度に1つの要求できるようになるので、代わりにAPIを呼び出す機能をフェッチforkが良いでしょうか?

また、応答ヘッダーで遭遇した後、すべての後続のリクエストに保存されたAPI access_tokenを管理することもできます。

function getAction(action) { 
    if (action) { 
    if (typeof action === "string") { 
     return { type: action } 
    } else { 
     return action 
    } 
    } 
} 

export function request(url, data, headers, actions) { 
    let result = { 
    type: REQUEST, 
    url, data, headers 
    } 
    actions[0] && result.startAction = getAction(actions[0]) 
    actions[1] && result.successAction = getAction(actions[1]) 
    actions[2] && result.errorAction = getAction(actions[2]) 
    return result 
} 

答えて

1

ここではいくつかの質問があります。

  • はい。ジェネリックリクエストサガは私にとって意味があります。すべての要求に対して標準を提供する場所が理にかなっています。

  • フォークが最も必要です。代わりにtakeEveryヘルパーを使用してください。これは、サガが処理中に何らかのリクエストがないことを防ぐためです。fetchraceを使用すると、デフォルトのタイムアウトが実装される必要があります。

  • requestのパラメータは、startActionのキーの配列よりもオブジェクトのほうが良いでしょう。代わりに、リクエストに名前を付けることもできます。各アクションの一般的な接尾辞をつける(例:GETSTH_START、GETSTH_SUCCESS、GETSTH_ERROR)

関連する問題