phi*_*ilk 9 reactjs redux redux-saga
我想知道通用请求saga是否有意义?
它将采取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})
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这一次只允许一个请求,所以不是调用API获取函数而是fork更好吗?
access_token一旦在响应头中遇到API,saga也可以负责管理API ,并为所有后续请求保存它.
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
}
Run Code Online (Sandbox Code Playgroud)
这里有几个问题。
是的。通用请求传奇对我来说很有意义。为所有请求提供标准的地方是有意义的。
叉子是绝对需要的。或者更确切地说使用takeEvery助手。这是为了防止在处理 saga 时丢失某些请求fetch。可能还需要使用 来实现默认超时race。
actions函数中的参数最好request是对象,而不是键为 的数组startAction。另一种方法是为请求指定名称。并为每个操作添加通用后缀(例如 GETSTH_START、GETSTH_SUCCESS、GETSTH_ERROR)
| 归档时间: |
|
| 查看次数: |
1373 次 |
| 最近记录: |