Javascript 当有来自服务器的新数据时更新本地存储?

Javascript 当有来自服务器的新数据时更新本地存储?,javascript,reactjs,caching,local-storage,Javascript,Reactjs,Caching,Local Storage,登录到app React.js后,我将在localStorage中缓存成员数据,因为我的许多组件都在使用它,理想情况下,请求只需要在登录时完成 但是,此成员对象中的一些属性可能会在后端手动更改,因此前端无法知道成员对象是否已更改。同样,理想情况下,对成员对象的任何更改都应该通过直接更改数据库的表单提交,通过表单提交可以触发localStorage的更新,但目前这不是一个选项 示例场景:应用程序中有一个通用表单可以请求额外的积分。客户服务将收到一封关于该请求的电子邮件。客户A的信用将在DB中手动更

登录到app React.js后,我将在localStorage中缓存成员数据,因为我的许多组件都在使用它,理想情况下,请求只需要在登录时完成

但是,此成员对象中的一些属性可能会在后端手动更改,因此前端无法知道成员对象是否已更改。同样,理想情况下,对成员对象的任何更改都应该通过直接更改数据库的表单提交,通过表单提交可以触发localStorage的更新,但目前这不是一个选项

示例场景:应用程序中有一个通用表单可以请求额外的积分。客户服务将收到一封关于该请求的电子邮件。客户A的信用将在DB中手动更新。如果客户A没有在完成获取成员请求的位置重新登录,localStorage仍将显示旧的信用数

如果是这种情况,最好的解决方法是什么

不要将成员数据存储在localStorage中,以保持数据的新鲜。只要在需要时调用端点即可

是否改用会话存储

当用户刷新页面/应用程序时触发重新蚀刻,尽管用户可能不知道他们需要这样做来更新数据

建议

如果数据将根据用户无法控制的情况发生更改,则在需要时调用端点是理想的。 会话存储只是本地存储,在浏览会话结束时会被擦除,但仍然会出现完全相同的问题 这并不能真正解决问题,要求用户执行常规维护任务以最大限度地使用应用程序通常是一种糟糕的用户体验
我只想更新数据。

在较高的层次上,您有两种选择:

轮询定期调用后端以刷新数据 打开与服务器的持久连接(如web套接字),并让服务器将更新推送到客户端。 后一种选择需要进行大量更改,并且会改变应用程序的可伸缩性,因此前一种选择似乎是最合理的选择

保持使用本地存储是明智的,这样您就有了数据的脱机副本,并且在页面加载期间不会阻止呈现;您可以有一个后台定期刷新过程,同时不会中断用户。如果您的数据以redux或context之类的方式镜像,则当数据更改时,您的UI可能会无需更新。

如果您不知道成员何时更新,请不要存储它。您应该在每次需要成员时查询后端。这是保持数据与数据库同步的唯一方法