reactjs - Firebase Redux 状态架构
问题描述
我是火力基地的新手。我正在使用这个库。
我通常开始在 redux 中开发应用程序,状态是本地的,调度操作等。我开始将它连接到 firebase,并意识到一旦用户登录,所有状态值都将来自 firebase。我对此有两个问题。
firebase 是否足以替代当地状态?我不会失去通量状态管理的好处吗?
我希望我的用户能够在不登录的情况下使用该应用程序,我是否需要为此目的拥有一个本地状态管理系统?如果是这样,则必须编写每个动作以考虑两种上下文,这似乎过分了。
const dataFromLocalState
const dataFromFirebase
userSignedIn ? dataFromFirebase.map() : dataFromLocalState.map()
和行动:
<button
onClick={() => userSignedIn ?
firebase.remove(`entries/${id}`) :
dispatch(deleteEntry(id));
}
>
Delete
</button>
解决方案
我不建议使用 Firebase 进行应用状态管理。特别不适用于网络。如果您正在使用
firestore
,您将为每次读取和写入付费。如果用户没有登录,你想如何在数据库中将它们分开?您需要每个用户/设备的唯一标识符。
如果您需要将数据存储到同时作为本地状态的 Firebase,最好的方法是使用中间件之类的东西将数据从 Firebase 同步到您的本地状态。
我 prsonaly 喜欢将 Providers 用于 Firebase 状态。来自 firebase 的所有内容都存储在本地状态中。这样您的应用程序就可以离线工作(至少读取数据的最后状态)。你可以在这里查看我是如何处理状态的。
每个 redux 库也是一个很好的解决方案。我们迁移到 Provisers 的原因是,在大型应用程序中,它们会因为通过 redux 传输的大量数据而变得迟缓。
推荐阅读
- intellij-idea - Lombok @NonNull 不适用检查返回类型
- javafx - 获取折线图系列描边颜色
- vue.js - 在创建 vue 组件的 npm 包时面临问题
- sql - 如何找到超过 2 位小数的值?
- azure - 如何知道队列是否已在 Azure 服务总线中使用 PEEK 方法完全读取
- react-native - 如何制作带有动画的自定义单选按钮?反应原生
- azure-active-directory - 我对 Azure AD - SAML 2.0 配置有疑问
- ajax - 如何在 ajax 函数调用的控制器中获取 Auth::user()
- apache-kafka - 如果有多个服务器访问单个主题,kafka 是否确保每条记录只处理一次
- tensorflow - 我可以将 TensorFlow Objectdetection API 的输出图像保存在文件夹中吗?