我想知道通用请求传奇是否有意义?
它将采取 REQUEST
操作,其中包含 header 、URL、数据等所有信息,并将其与自己的 header 和基本 URL 合并。
然后,它会获取
请求,然后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})
}
据我了解,这一次只允许一个请求,因此与其调用 API 获取函数,不如使用 fork
更好?
一旦在响应 header 中遇到 API access_token
,saga 还可以负责管理它,并将其保存以用于所有后续请求。
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
}
最佳答案
这里提出了几个问题。
是的。通用请求传奇对我来说很有意义。为所有请求提供标准的地方是有意义的。
fork 是绝对需要的。或者更确切地说,使用
takeEvery
帮助器。这是为了防止在 saga 处理fetch
时丢失某些请求。可能还需要使用race
来实现默认超时。request
函数中的actions
参数最好是对象,而不是带有startAction
键的数组。另一种方法是为请求指定名称。并为每个操作添加通用后缀(例如 GETSTH_START、GETSTH_SUCCESS、GETSTH_ERROR)
关于reactjs - API 请求的 redux 传奇有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746462/