Saga вызывается 2 раза при одном диспатче

Происходит все подобным образом:

Есть useEffect, который вызывается при смене параметров url и диспатчит экшен, который пинает сагу. Опытным путём через использование console.log('fhsgdvufsdh') было выявлено, что useEffect работает так, как и должен: вызывается 1 раз при смене урал.

    const params = useParams().params;

    useEffect(() => {
        if (urlTriggers.some(item => item === params)) {
            dispatch(setItemsCollection({ itemType: params }));
            toggleVisibleMode(true);
        } else {
            toggleVisibleMode(false);
        }
    }, [params]);

Сага-наблюдатель, представленная ниже, реагирует на задиспатченный выше экшен.

export function* setItemsCollectionWatcher() {    
    yield takeEvery(setItemsCollection.TRIGGER, setItemsCollectionWorker);
}

И вызывает вот эту рабочую сагу.

function* setItemsCollectionWorker(action) {
    const { itemType } = action.payload;
    try {        
        yield put(toggleIsFetching({ isFetching: true }));

        const itemsCollection = yield call(() => {
            return axios.get(`http://localhost:60671/api/items/${itemType}/?page=1&count=2`).then(response => response.data.items);
        });
        yield put(setItemsCollection.success({ itemsCollection }));
        yield put(toggleIsFetching({ isFetching: false }));

    } catch (error) {
        console.log(error);
    } finally {
        yield put(setItemsCollection.fulfill());
    }
}

Есть и такой генератор, который главенствует над всеми сагами-наблюдателями.

export default function* saga() {
    yield all([
        setBackgroundWatcher(),
        setItemsCollectionWatcher(),
    ])
}

И здесь запускается основная сага.

sagaMiddleware.run(saga);

И вот я не могу понять, почему при 1 вызове useEffect и 1 диспатче я получаю 2 вызова саги и 2 гет-запроса.


Ответы (0 шт):