Как мне объединить 2 сага-звонка, которые мне нужно использовать отдельно на других страницах?
Я пробовал несколько вещей (выдать все и т. Д.), Основываясь на других ответах SO, но я не могу выполнитьжелаемый результат.
У меня есть сага, показанная ниже, и мое приложение в основном работает нормально.На отдельной странице Коллекции и Коллекции у меня нет проблем.Тем не менее, у меня есть страница, которая представляет собой сочетание коллекций и коллекции.После того, как коллекции возвращены, мой Saga устанавливает setLoader в значение false, ДО того, как второй вызов saga возвращает результаты для Collection, что означает, что мой загрузчик не работает правильно.
Я уверен, что мог бы добавить еще одну утку / промежуточное ПО для GET_BOTH, * loadBoth могбудет сделано, но я хочу избежать этого.
Любые предложения будут высоко оценены.Спасибо.
import { fork, call, put, take } from "redux-saga/effects";
import { setLoader } from "../ducks/loader";
import { types as collectionsTypes, actions as collectionsActions } from "../ducks/collections";
import { types as collectionTypes, actions as collectionActions } from "../ducks/collection";
import {
getCollectionsApiRequest,
getCollectionApiRequest
} from "../services/api";
export function* loadInitialCollections(query = "") {
try {
yield put(setLoader(true));
const collectionsResult = yield call(getCollectionsApiRequest, query);
yield put(collectionsActions.getCollectionsSuccess({
collections: collectionsResult.data,
feature: collectionsTypes.COLLECTIONS
}));
yield put(setLoader(false));
} catch(e) {
console.log(e);
}
}
export function* loadInitialCollection(query = "") {
try {
yield put(setLoader(true));
const collectionResult = yield call(getCollectionApiRequest, query);
yield put(collectionActions.getCollectionSuccess({
collection: collectionResult.data,
feature: collectionTypes.COLLECTION
}));
yield put(setLoader(false));
} catch(e) {
console.log(e);
}
}
export function* watchGetCollectionsRequest() {
while(true) {
const { query } = yield take(collectionsTypes.GET_COLLECTIONS);
yield fork(loadInitialCollections, query);
}
}
export function* watchGetCollectionRequest() {
while(true) {
const { query } = yield take(collectionTypes.GET_COLLECTION);
yield fork(loadInitialCollection, query);
}
}
const salesSaga = [
fork(watchGetCollectionsRequest),
fork(watchGetCollectionRequest)
];
export default salesSaga;