编写 rootSaga 的最佳方式

Best way to write a rootSaga

export function* watcherSaga() {
    yield all([
        takeEvery("POST_CONTACT_USER", handlePostContactUser),
        takeEvery("POST_CAREERS_USER", handlePostCareersUser),
        takeEvery("POST_TEAM", handlePostTeam),
        takeEvery("CONTACT_SEND_TO_NODE", handleSendContactToNode),
        takeEvery("CAREERS_SEND_TO_NODE", handleSendCareersToNode),
        takeEvery("TEAM_SEND_TO_NODE", handleSendTeamToNode),
        takeEvery("PROJECT_SEND_TO_NODE", handleSendProjectToNode),
        takeEvery("POST_PROJECT", handlePostProject),
    ]);
};

这是我现在处理它的方式,但我觉得这可能不是最好的方法,有时东西不是 运行 而且我不认为我在其他部分破坏了代码项目的(我也没有收到任何错误)。

这是目前最好的方法吗?我还遗漏了其他东西,或者这段代码确实有问题吗?

这种方法很好,本身不会引起任何错误。唯一的“弱点”是,如果任何子 saga 抛出错误,它将杀死整个 saga 树。

您可以使用 spawn 效果来阻止这种情况,这将创建全新的传奇树,但是您仍然应该捕获并处理这些错误。

redux-saga 文档实际上有一个专门的页面,包括一些示例如何在失败时自动重启 saga 子树:

https://redux-saga.js.org/docs/advanced/RootSaga/