Redux. Как запустить несколько саг в sagaMiddleWare.run([ f1*(), f2*(), f3*() ]) с помощью redux-saga?

Мне нужно решение для запуска нескольких саг в разные моменты времени. Я создал 3 разных саги и попытался внедрить их в sagaMiddleWare.run() как массив. Но сейчас я получаю ошибку - runSaga(storeInterface, saga, ...args): saga argument must be a Generator function!,

Я понимаю, почему происходит эта ошибка, но не понимает, как ее решить?

Спасибо!

sagaMiddleWare.run([watchSearchForCash, watchBootlegging, watchGraffiti])

2 ответа

Решение

Вы можете сделать это легко, объединив все саги в одну оболочку, называемую (например) rootSaga:

function * rootSaga() {
  yield [
    watchSearchForCash, 
    watchBootlegging, 
    watchGraffiti
  ]
}

а затем реализовать свой новый держатель саги rootSaga внутри sagaMiddleWare.run(rootSaga)

Thant все волшебство:)

все наблюдатели должны иметь (), потому что все функции!

      import { all } from 'redux-saga/effects'
    import productSaga from './product/saga';
    function* rootSaga() {
        yield all([
            watcheProductSaga(),
            watcheUserSaga(),
        ])
      }
      export default rootSaga;
Другие вопросы по тегам