Redux 重演传奇:在错误为真的地方采取一切行动

Redux 重演传奇:在错误为真的地方采取一切行动,redux,redux-saga,Redux,Redux Saga,是否可以指定操作的错误字段是否设置为true const response = function*() { yield takeEvery("CLIENT_RESPONSE", handleResponse); } 但是,我们不知道类型为CLIENT\u RESPONSE的操作是否将其错误字段设置为true 我知道我可以在HandlerResponse中检查这一点,但这似乎比它应该做的工作要多。例如,handleResponse可能会变得复杂,因为对于非错误和错误情况,我都需要编写大量

是否可以指定操作的错误字段是否设置为true

const response = function*() {
    yield takeEvery("CLIENT_RESPONSE", handleResponse);
}
但是,我们不知道类型为
CLIENT\u RESPONSE
的操作是否将其错误字段设置为true

我知道我可以在
HandlerResponse
中检查这一点,但这似乎比它应该做的工作要多。例如,
handleResponse
可能会变得复杂,因为对于非错误和错误情况,我都需要编写大量代码(即,我希望这两种情况都有不同的处理程序)

那么,有没有一种方法可以指定仅在error设置为true时执行该操作?

根据Saga API,
takeEvery
的模式(第一个参数)可以是
String
Array
Function
const response = function*() {
    yield takeEvery("CLIENT_RESPONSE", handleResponse);
}
您可以通过传递函数来实现所需:

const response = function*() {
    yield takeEvery(action => (action.type === "CLIENT_RESPONSE" && !action.error), handleResponse);
}
根据sagaapi,
takeEvery
的模式(第一个参数)可以是
String
Array
函数
。 您可以通过传递函数来实现所需:

const response = function*() {
    yield takeEvery(action => (action.type === "CLIENT_RESPONSE" && !action.error), handleResponse);
}