如何在React中声明全局变量?

i18n在一个组件(在应用程序中加载的第一个组件)中初始化了翻译对象一次。所有其他组件都需要相同的对象。我不想在每个组件中重新初始化它。怎么回事?使它可用于窗口范围无济于事,因为我需要在render()方法中使用它

请提出针对这些问题的通用解决方案,而不是针对国际化的解决方案。

Gil伽罗小宇宙2020/03/12 18:10:22

到目前为止,我发现的最好方法是使用React Context,但将其隔离在高阶提供程序组件中

小胖Eva2020/03/12 18:10:22

为什么不尝试使用Context

您可以在任何父组件中声明一个全局上下文变量,并且可以在组件树中通过来访问此变量this.context.varname您只需要在父组件中指定childContextTypesgetChildContext然后就可以通过contextTypes在子组件中进行指定而任何组件中使用/修改它

但是,请注意文档中提到的这一点:

正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下也应避免使用上下文。特别是在使用它“保存类型”并使用它而不是传递显式道具之前,请三思。

2020/03/12 18:10:22