JavaScript:为单个页面应用程序存储一个全局变量



a使用单个页面有一个React应用程序。我调用index.html并使用ajax(axio(并更新页面。我不使用任何路由。

我有一些全局变量,将用于整个应用程序范围。例如,变量是原始类型整数。某些变量可以在应用程序生命周期期间更新,而有些变量保持恒定。但是我应该能够从所有反应组件/javaScript中与它们联系。它们可能包含与业务相关的常数或示例十进制格式面膜,使它们在每个组件中都没有用。

无需/理由将其存储在磁盘(localstorage(上。

问题是:在应用程序中存储全局变量的最佳方法(性能等(是什么?

window.foo = 10 or
window.sessionStorage.foo = 10

afaik,window.foo用于单个页面,sessionstorage允许在同一派生中的多个页面中使用。当我使用单页时,最好的是什么? window.foo 是否还有其他缺点?安全并不重要,存储的阀门不敏感。最关键的是性能。

您可能要使用上下文而不是其中任何一个。从该文档:

上下文旨在共享可以将React组件树(例如当前身份验证的用户,主题或首选语言(视为"全局"的数据。

绝对不使用全局变量。全局名称空间是令人难以置信的拥挤的,并且通常不是最好的做法。如果您 did 为此使用全局,我建议仅使用一个,并将其引用具有属性的对象,以获取要共享的各种信息。请注意,它们将是特定于窗口的。

可能考虑使用sessionStorage(或可能定期同步的React上下文(的一个原因是,如果您想在另一个窗口中更改以在另一个窗口中反映。来自同一原点的两个Windows/Tabs共享相同的sessionStorage,当另一个更改该存储时,可以获得一个事件(storage(。因此,如果全局信息是应用程序主题(例如,Light vs. Dark(,则在一个选项卡中更改它也可能会影响另一个选项卡,如果您通过更新React上下文来响应storage事件。请注意,sessionStorage(和localStorage(仅存储 strings ,因此通常是在存储时转换为JSON(JSON.stringify(和加载时的JSON(JSON.parse(。

相关内容

  • 没有找到相关文章

最新更新