首页 > 解决方案 > Firebase Redux 状态架构

问题描述

我是火力基地的新手。我正在使用这个库

我通常开始在 redux 中开发应用程序,状态是本地的,调度操作等。我开始将它连接到 firebase,并意识到一旦用户登录,所有状态值都将来自 firebase。我对此有两个问题。

  1. firebase 是否足以替代当地状态?我不会失去通量状态管理的好处吗?

  2. 我希望我的用户能够在不登录的情况下使用该应用程序,我是否需要为此目的拥有一个本地状态管理系统?如果是这样,则必须编写每个动作以考虑两种上下文,这似乎过分了。

const dataFromLocalState
const dataFromFirebase

userSignedIn ? dataFromFirebase.map() : dataFromLocalState.map()

和行动:

<button
    onClick={() => userSignedIn ? 
                   firebase.remove(`entries/${id}`) : 
                   dispatch(deleteEntry(id));
    }
>
    Delete
</button>

标签: reactjsfirebaseredux

解决方案


  1. 我不建议使用 Firebase 进行应用状态管理。特别不适用于网络。如果您正在使用firestore,您将为每次读取和写入付费。

  2. 如果用户没有登录,你想如何在数据库中将它们分开?您需要每个用户/设备的唯一标识符。

如果您需要将数据存储到同时作为本地状态的 Firebase,最好的方法是使用中间件之类的东西将数据从 Firebase 同步到您的本地状态。

我 prsonaly 喜欢将 Providers 用于 Firebase 状态。来自 firebase 的所有内容都存储在本地状态中。这样您的应用程序就可以离线工作(至少读取数据的最后状态)。你可以在这里查看我是如何处理状态的。

每个 redux 库也是一个很好的解决方案。我们迁移到 Provisers 的原因是,在大型应用程序中,它们会因为通过 redux 传输的大量数据而变得迟缓。


推荐阅读