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;