i18n我在一个组件(在应用程序中加载的第一个组件)中初始化了一次翻译对象。在所有其他组件中都需要相同的对象。我不想在每个组件中重新初始化它。有什么办法?使其可用于窗口范围并没有帮助,因为我需要在render()方法中使用它。
i18n
render()
请为这些问题提出一个通用的解决方案,而不是 i18n 特定的解决方案。
你为什么不尝试使用Context?
您可以在任何父组件中声明全局上下文变量,并且可以通过this.context.varname. 您只需在父组件中指定childContextTypes和,然后您可以通过在子组件中getChildContext指定来从任何组件中使用/修改它。contextTypes
this.context.varname
childContextTypes
getChildContext
contextTypes
但是,请注意文档中提到的这一点:
正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下您应该避免使用上下文。特别是,在使用它来“节省打字”并使用它而不是传递显式道具之前,请三思而后行。