【发布时间】:2018-03-05 11:26:56
【问题描述】:
我正在 React 中构建一个连接到 Firebase 的网络应用程序,该应用程序对用户进行身份验证并存储发布数据。网上似乎有很多关于使用 Redux 的文档,但是没有很多关于没有它的持久状态的文档。
当用户刷新页面时,<App /> 的状态被重置,因此我需要保留现有状态/从 Firebase 中检索它。一些文章建议使用本地存储来存储状态。但是考虑到最佳实践,应该在本地存储中存储什么?我的应用程序将所有状态存储在 <App /> 中,并将所需状态作为道具传递给相关组件。
以下两个示例假设用户已经通过身份验证并且刚刚刷新了他们的页面。我们希望保留他们的会话,我们也希望:
示例 #1:
- 应用程序加载并检查本地存储以查找最后存储的本地状态的字符串化对象。将状态设置为该状态或空状态。
- 如果检索并设置了
'state',请使用this.state['uid']与 Firebase 同步状态(获取),然后再次更新本地存储状态。 - 每当用户更新某些内容时,更新状态(更新 Firebase)并更新本地存储状态。
- 用户注销时,清空本地存储
'state'项。
示例 #2:
- 应用加载并检查本地存储中的 uid(在身份验证期间设置),如果找到,则使用该 uid 与 firebase 同步状态(获取)。
- 如果用户重新加载页面,则会再次从 Firebase 获取数据。
- 用户注销时,清空本地存储
'uid'项。
对于第一个示例,我有效地保留了两个状态副本。一个在 React 的 State 中,另一个在浏览器的本地存储中。如果用户关闭窗口或刷新页面。
我的问题是:最佳做法是什么?
或者,是否正在构建一个需要在不同路径上持久保存用户和状态的 React 应用程序,而 Redux 完全不傻?
如果没有 Redux,学习 React 就够了,所以我想看看如果没有它,我是否可以应付。
【问题讨论】:
标签: javascript reactjs firebase-realtime-database firebase-authentication