Tôi tự hỏi nếu một yêu cầu chung saga làm cho bất kỳ ý nghĩa?Giao diện Redux cho các yêu cầu API có hợp lý không?
Nó sẽ thực hiện hành động REQUEST
chứa tất cả các infos như tiêu đề, url, dữ liệu và hợp nhất với tiêu đề và URL cơ sở của nó. Sau đó nó sẽ yêu cầu fetch
yêu cầu và sau đó put(REQUEST_SUCCEEDED, json)
với tải trọng json trong cửa hàng.
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})
}
Theo tôi được biết điều này sẽ chỉ cho phép một yêu cầu tại một thời điểm, vì vậy thay vì gọi API lấy hoạt động một fork
sẽ tốt hơn?
Saga cũng có thể quản lý API access_token
khi nó gặp nó trong tiêu đề phản hồi và lưu nó cho tất cả các yêu cầu tiếp theo.
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
}