`react-redux-firebase` 解决了啥问题?

Posted

技术标签:

【中文标题】`react-redux-firebase` 解决了啥问题?【英文标题】:What problem does `react-redux-firebase` solve?`react-redux-firebase` 解决了什么问题? 【发布时间】:2019-12-29 02:59:28 【问题描述】:

我是所有这些技术的新手,但据我了解,您可以在没有 react-redux-firebase 的情况下将 React Native 与 Redux 和 Firebase 一起使用。你可以使用

react react-native redux react-redux react-native-firebase

然后您从 Firebase(例如 Firestore)加载数据并将数据放入 reducer,以便将其合并到 redux 存储中。

我为什么需要react-redux-firebase它解决了什么问题?

我已经尝试过它的docs,但它们似乎是为已经熟悉其目标的人编写的。他们并没有真正解释,在阅读示例时,我不明白为什么我特别需要react-redux-firebase 而不是上面列出的设置。

【问题讨论】:

它添加了 README 中列出的功能。重点是明确不要手动做所有事情——你当然可以这样做。 @DaveNewton 这正是我的问题:图书馆可以为我做些什么手动操作? README 例如说“开箱即用的身份验证支持”。但是react-native-firebase 可以用一行代码做到这一点:firebase.auth().signInWithEmailAndPassword(...)。我不明白为什么这比docs.react-redux-firebase.com/history/v3.0.0/docs/auth.html 更多的手工工作 不知道;看不到你的代码。你的 sn-p 创建一个用户; r-r-f 的 auth 文档显示的功能比创建用户更多。与您现在所做的工作相比,它是更多还是更少,这是无法猜测的。 @DaveNewton 我还没有任何代码,我只是想找出我需要哪个库。您是否知道一个明显可见 r-r-f 节省手动工作的示例?就像,一个“手动”示例,然后与 r-r-f 相同? 明白了,(在我看来)repo home 似乎回答了这些问题。您不太可能为“辅助”库找到与“核心”库一样多的资源,因为一旦您脱离了“核心”技术,基本上就有无限多的选择。 【参考方案1】:

Firebase 处于您的状态,听它并修改它,它将改变您的 Firebase 数据库。数据库上的数据发生变化后,监听的组件也会发生变化。

这将在数据库中创建一个项目

    updateTodo: props => () => 
      return firebase.update(`todos/$params.todoId`,  done: !todo.isDone )
    

所以任何监听该节点的组件都会得到更新:

  connect((state) => (
    todos: state.firebase.data.todos,
    // profile: state.firebase.profile // load profile
  ))

它解决了多个事实来源的问题,您的 Firebase 数据库是您唯一的事实来源,否则,您更改本地数据,然后在线更新数据,然后如果它有效没有别的,但如果它失败了,你必须再次更新本地数据

【讨论】:

它是否更新了connect 函数以便它自动监听数据库中的变化?它会自动将 redux 状态存储在 Firebase 中吗? 是的!将数据更改为 firebase-redux 将更改在线数据库上的数据。然后每个监听该 firebase-redux 状态的组件都会更新到 UI 级别。基本体现了在线数据库的结构,可以直接修改。

以上是关于`react-redux-firebase` 解决了啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何纠正 Redux 商店中的 React-Redux-Firebase 错误

使用 react-redux-firebase 消费云功能 - React JS

使用 React 和 react-redux-firebase 在登录期间确定范围

如何使用 react-redux-firebase 将 'auth' 或 'profile' 对象传递给 firestoreConnect()?

如何将 firestoreConnect 指向 React-Redux-Firebase 中的嵌套集合?

如何使用 react-redux-firebase 从 firestore 获取子集合