2017-05-25 26 views
0

我正在一个大的React App中工作。在我的顶级父组件中,我通过Flux动作分派将一些信息(来自登录服务的用户数据)添加到本地存储中。一旦该动作发出,应用程序的其余部分就会呈现,但某些组件的可见性取决于本地存储中数据的状态(即用户读取权限)。请注意,这一切都在服务器端进行验证,当我查询收集数据以填充这些组件时,我只想以最有效的方式呈现它们。从LocalStorage添加和检索项目是否存在延迟?

由于这些组件不会在添加权限数据的操作发出之前尝试呈现,因此我可以假设权限数据可用于从子组件的构造函数/ componentWillMount中的本地存储读取?还是我需要处理写入本地存储和读取它之间的潜在延迟?

编辑: 根据以下评论,我可以将我的用户权限存储在Store中,而不是解决此问题。

但是,我还从登录服务获取API的URI,这些URI可能会根据用户而改变。此URI用于在挂载子组件时调度的操作调用的函数中的ajax调用。由于这是一个静态实体,而不是状态的一个组成部分,因此本地存储似乎是在商店中占据这个位置的更好的地方。所以上面的延迟问题仍然代表了这个方面,假设只要子组件挂载并且触发了ajax调用,就可以从本地存储中读取URI了吗?或者我需要处理潜在的延迟。

+1

_某些组件的可见性取决于该数据在本地存储中的状态._这是React/Redux中的错误方法。组件应该仅取决于来自Redux商店**的数据**。没有直接依赖本地存储!如果您想要将本地存储数据序列化到本地存储中,则必须订阅商店中的更改或使用中间件。有关详细信息,请参阅[此答案](https://stackoverflow.com/a/35675304/2118955) – hindmost

+0

谢谢,这是处理权限和视图图层的更好方法。不过,我还有一些问题,我认为我的问题仍然代表他们,请参阅我的编辑。 –

+0

看来你仍然不明白Redux如何工作)。除了Redux商店以外,切勿为应用程序状态使用额外的源代码。您只能使用本地存储进行序列化,而不能用于实际状态存储。如果请求URI是依赖于用户的,则根据当前用户数据构建它们。我在这里没有看到任何问题。 – hindmost

回答

1

对localstorage的调用是同步的,因此您可以放心地假设,如果您在localstorage中设置了一个值,它将在将来的代码行执行之前完成。