redux-saga и firebase - не могут выйти из системы чистым способом - PullRequest
0 голосов
/ 31 декабря 2018

В качестве предисловия позвольте мне упомянуть, что до сегодняшнего дня я никогда не использовал redux-saga или Firebase.В настоящее время я играю вокруг, чтобы почувствовать обе технологии.

Возможно, я просто упускаю небольшую концепцию, но мне кажется, что я не могу выйти из системы для работы над моим приложением.Я подумал, что мне, вероятно, следует использовать call() для управления побочными эффектами в саге, но ничего не поделаешь.

Вот саги, о которой идет речь:

export function* deauthenticateUser() {
  yield takeLatest(DEAUTHENTICATE_REQUEST, function* () {
    try {
      yield call(firebase.auth().signOut)
      yield put({ type: DEAUTHENTICATE })
    }
    catch (error) {
      yield put({
        type: DEAUTHENTICATE_FAILURE,
        payload: error,
        error: true,
      })
    }
  })
}

Я подтвердил этот вызов firebase.auth().signout() напрямую работает, только при использовании call() я получаю действие ошибки.Обратите внимание, что при отправке ошибки также нет полезной нагрузки.

Я проверил в документации Firebase , и, очевидно, firebase.auth().signout() возвращает обещание без содержимого в качестве содержания.Я начинаю задумываться, не будет ли это проблемой, может быть, redux-saga не нравится, когда он не дает результата в обещании при использовании call()?

Как будет обрабатываться аутентификация и особенно выходить из системы с помощьюFirebase и redux-saga?

1 Ответ

0 голосов
/ 02 января 2019

Из комментария от NULL SWEΔT мне пришлось позвонить yield call([firebase.auth(), firebase.auth().signOut]).

Причина этого заключается в контексте JS и работе this.Подробнее читайте , это и , это (см. Документацию для call([context, fn], ...args)).

...