我在连接到Firebase的React中构建了一个Web应用程序,该应用程序对用户进行身份验证并存储发布数据。网上似乎有很多关于使用Redux的文档,但没有关于坚持没有它的状态的文章。如何在本地存储中保持状态React without Redux?
当用户刷新页面时,<App />
的状态将重置,因此我需要保留现有状态/从Firebase中检索它。一些文章建议使用本地存储来存储状态。但考虑到最佳实践,应该存储在本地存储?我的应用程序将所有状态存储在<App />
中,并将需要的状态作为道具传递给相关组件。
以下两个示例假定用户已经过身份验证并刚刚刷新了其页面。我们希望他们会被保存下来,我们这样做:
例子#1:
- 应用加载和检查最后存储本地状态的字符串化的对象本地存储。将状态设置为该状态或空状态。
- 如果检索并设置了
'state'
,则使用this.state['uid']
将状态与Firebase(读取)同步,然后再次更新本地存储状态。 - 每当用户更新某些内容时,请更新状态(更新Firebase)并更新本地存储状态。
- 当用户注销时,清除本地存储
'state'
项目。
例子#2:
- 应用加载,并检查一个UID本地存储(其在认证期间设置),如果找到一个,使用与火力(读取)同步状态。
- 如果用户重新加载页面,则会从Firebase再次获取数据。
- 当用户注销时,清除本地存储
'uid'
项目。
在第一个例子中,我有效地保留了状态的两个副本。一个在React的State
中,另一个在浏览器的本地存储中。如果用户关闭窗口或刷新页面。
我的问题是:最佳做法是?
或者,正在构建一个React应用程序,它需要在不使用Redux的情况下保持不同路线的用户和状态?
在没有Redux的情况下学习React足够了一条曲线,所以我试图看看如果没有它,我是否可以管理。