我需要通过检查某些条件来调用api。但是在任何请求/响应之后都需要此api调用。但是我找不到任何有用的东西。
因此,我正在寻找一种使用redux-saga设置项目的解决方案,以便可以在任何请求/响应上调用api。
例如我们可以在不同的地方进行不同的api调用;
.fetch('/books')
.fetch('/copies')
etc.
现在,我还希望在每次提取时都调用一个api(在请求之前和响应之后)。希望这现在很清楚。
答案 0 :(得分:0)
您是否在redux-saga中尝试了effectmiddlwares:https://github.com/redux-saga/redux-saga/blob/master/docs/advanced/Testing.md#effectmiddlwares?
答案 1 :(得分:0)
假设您有一种可靠的方式来识别响应动作,则可以使用pattern
函数来匹配所有响应动作并触发另一个调用。
例如:
// assuming your response success action types all look like "REQUEST_TYPE_SUCCESS"
function isResponse(action) {
return action.type.endsWith("SUCCESS")
}
function* makeApiCall(action) {
// maybe do some logic to determine the api call based on the action
yield call(asyncApiCall, args);
}
function* responseWatcher() {
// consider takeLatest or takeLeading instead of takeEvery depending on your use case
yield takeEvery(isResponse, makeApiCall);
}
然后将responseWatcher
添加到您的根目录中,但您要进行设置。
如果您需要有关take
助手的pattern
arg的更多信息,请参见take
的api参考:https://redux-saga.js.org/docs/api/#takepattern