redux-saga プロジェクトはかなり前から存在していますが、このライブラリについてはまだ多くの混乱を招くことがあります。それらの 1 つは、rootSaga を開始する方法です。たとえば、初心者のチュートリアルでは、rootSaga はサガの配列を生成することによって開始されます。このような
export default function* rootSaga() {
yield [
helloSaga(),
watchIncrementAsync()
]
}
ただし、saga ヘルパーの使用セクションでは、rootSaga は 2 つのフォークされた saga で構成されています。このような:
export default function* rootSaga() {
yield fork(watchFetchUsers)
yield fork(watchCreateUser)
}
rootSaga を開始するのと同じ方法が、redux-saga リポジトリの非同期の例で使用されています。ただし、現実世界とショッピング カードの例を確認すると、そこにある rootSagas がフォークされたサガの配列を生成することがわかります。このような:
export default function* root() {
yield [
fork(getAllProducts),
fork(watchGetProducts),
fork(watchCheckout)
]
}
また、redux-saga の問題に関するいくつかの議論を読むと、フォークされたサガの 1 つが未処理の例外のためにキャンセルされた場合にアプリケーションが完全にクラッシュするのを防ぐために、rootSaga に fork の代わりに spawn を使用することを提案する人がいることがわかります。
では、rootSaga を開始する最も正しい方法はどれですか? そして、既存のものとの違いは何ですか?