Организация саг очень похожа на организацию редукторов.Вы также, вероятно, начнете использовать combReducers в корневом редукторе с простым списком всех редукторов, и он может даже довольно хорошо масштабироваться.Длинные списки редукторов / саг обычно не являются источником особых проблем.
Однако, в конечном итоге, в обоих случаях вы можете захотеть ввести древовидную структуру.Например, если ваше приложение выглядит так:
+-- services/
| +-- live-updates
| | +-- live-updates-saga.js
| +-- local-storage
| | +-- local-storage-saga.js
| +-- services-saga.js
+-- sections/
| +-- home
| | +-- home-saga.js
| +-- contacts
| | +-- contacts-saga.js
| +-- sections-saga.js
+-- root-saga.js
Вы можете запустить свои саги следующим образом:
// root-saga.js
function* rootSaga () {
yield all([
fork(servicesSaga),
fork(sectionsSaga),
])
}
// services-saga.js
function* servicesSaga () {
yield all([
fork(liveUpdatesSaga),
fork(localStorageSaga),
])
}
// sections-saga.js
function* sectionsSaga () {
yield all([
fork(homeSaga),
fork(conactsSaga),
])
}
// live-updates/local-storage/home/contacts-saga.js
function* liveUpdatesSaga () {
yield takeEvery(XYZ, xyzSaga)
}
Я бы не назвал ни одно из решений "правильным".Просто поэкспериментируйте, что подходит вам лучше.