Проект redux-saga существует уже довольно долгое время, но все же в этой библиотеке много запутанных вещей. И один из них: как начать свой rootSaga. Например, в учебном пособии beginner rootSaga запускается путем создания массива саг. Как этот
export default function* rootSaga() {
yield [
helloSaga(),
watchIncrementAsync()
]
}
Однако в с помощью сага-помощников раздел rootSaga состоит из двух разветвленных саг. Вот так:
export default function* rootSaga() {
yield fork(watchFetchUsers)
yield fork(watchCreateUser)
}
Такой же способ запуска rootSaga используется в примере async в регрессировании редукс-саги. Тем не менее, если вы проверите примеры реальных и торговых карт, вы увидите, что rootSagas там выдает массив разветвленных саг. Вот так:
export default function* root() {
yield [
fork(getAllProducts),
fork(watchGetProducts),
fork(watchCheckout)
]
}
Кроме того, если вы прочитаете некоторые обсуждения в проблемах с редукцией саги, вы увидите, что некоторые люди предлагают использовать spawn вместо fork для rootSaga для защиты вашего приложения от полного сбоя, если один из ваших разветвленных саг отменен из-за некоторых необработанное исключение.
Итак, какой способ является самым правильным способом запустить ваш rootSaga? И каковы различия между существующими?