take(eventChannel) выполняет все действия вместо выдаваемого результата

Я пытаюсь подписаться на firebase onAuthStateChanged, используя канал событий в redux-saga, мне удалось поставить песочницу, показывающую статус

https://codesandbox.io/s/42kwzv2324

Строки 71 и 72 в sagas/sagas.js, я регистрирую результат take, я обнаружил, что все действия регистрируются вместо пользователя, который выдается из канала событий.

Что я делаю не так? Я не могу выполнить отладку, так как журнал внутри обратного вызова onAuthStateChanged не срабатывает.


person MeanMan    schedule 18.12.2018    source источник


Ответы (1)


Основная проблема в вашей песочнице заключается в том, что вы неправильно импортируете eventChannel.

Сдача:

import eventChannel from "redux-saga";

To:

import {eventChannel} from "redux-saga";

В вашем текущем коде вы создаете новое промежуточное ПО саги вместо eventChannel. Промежуточное ПО Saga — это функция, которая является поддерживаемым параметром take. Поскольку промежуточная функция саги всегда возвращает истинное значение, эффект take срабатывает для каждого отправленного действия.

person Martin Kadlec    schedule 19.12.2018