连接firebase和redux-sagas的正确方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接firebase和redux-sagas的正确方法是什么?相关的知识,希望对你有一定的参考价值。

我正在构建react-native app,我使用react-native-firebaseredux-saga。这是我使用redux-saga的第一个项目,因此我正在学习。到目前为止,我使用以下方法获得了用户的身份验证:

import firebase from 'react-native-firebase';

function* loginEmlPwdSaga(action) {
  try {
    const auth = firebase.auth();
    const data = yield call(
      [auth, auth.signInAndRetrieveDataWithEmailAndPassword],
      action.email,
      action.password,
    );
    yield put(loginSuccess(data));
  } catch (error) {
    yield put(loginFail(error));
  }
}

但是,现在我陷入困境,我想订阅该集合。在react-native-firebase我会使用以下内容:

firebase.firestore().collection('users').onSnapshot(...)

我不确定在qazxsw poi处理订阅者的最佳方法是什么。你能告诉我我可以用于将来使用快照(可测试的)的模式吗?

答案

使用redux-saga订阅firestore集合的最简单方法是使用频道:

redux-saga

每次firebase将更改推送到您的客户端时,这将分派一个动作(由function * syncUsers () { const ref = app.firestore().collection('users') const channel = eventChannel(emit => ref.onSnapshot(emit)) try { while (true) { const data = yield take(channel) yield put(successAction(data)) } } catch (err) { yield put(errorAction(err)) } } 创建)。

您还可以使用像successAction(data)这样的库来自动执行此部件,并使用:

redux-saga-firebase

免责声明:我是function * syncUsers () { yield fork(rsf.firestore.syncCollection, 'users', { successActionCreator: successAction, failureActionCreator: errorAction }) } 的作者。

以上是关于连接firebase和redux-sagas的正确方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

将观察者传递给 redux-sagas

如何使用 Swift 使用 Firebase 正确观察两个连接节点

如何使用 Redux-Saga 和 Hooks 调用 API

如何正确连接并显示从 Firebase 到自定义列表视图 Android Studio 的数据

在 redux-Saga 中重新连接到 webSocket 服务器的标准方法?

如何防止 redux-saga 调用我的 api 调用两次?