我i18n
在一个组件(在应用程序中加载的第一个组件)中初始化了翻译对象一次。所有其他组件都需要相同的对象。我不想在每个组件中重新初始化它。怎么回事?使它可用于窗口范围无济于事,因为我需要在render()
方法中使用它。
请提出针对这些问题的通用解决方案,而不是针对国际化的解决方案。
我i18n
在一个组件(在应用程序中加载的第一个组件)中初始化了翻译对象一次。所有其他组件都需要相同的对象。我不想在每个组件中重新初始化它。怎么回事?使它可用于窗口范围无济于事,因为我需要在render()
方法中使用它。
请提出针对这些问题的通用解决方案,而不是针对国际化的解决方案。
为什么不尝试使用Context?
您可以在任何父组件中声明一个全局上下文变量,并且可以在组件树中通过来访问此变量this.context.varname
。您只需要在父组件中指定childContextTypes
,getChildContext
然后就可以通过contextTypes
在子组件中进行指定而在任何组件中使用/修改它。
但是,请注意文档中提到的这一点:
正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下也应避免使用上下文。特别是在使用它“保存类型”并使用它而不是传递显式道具之前,请三思。
您可以在react https://facebook.github.io/react/docs/reusable-components.html#mixins中使用mixins 。
到目前为止,我发现的最好方法是使用React Context,但将其隔离在高阶提供程序组件中。