9

一般的なリクエスト サガに意味があるのだろうか?

ヘッダー、URL、データなどのすべての情報をREQUEST含むアクションを実行し、それを独自のヘッダーとベース URL とマージします。次に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より良いでしょうか?

saga は、応答ヘッダーで API を検出すると、その 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
}
4

1 に答える 1