我对创建mixin / decorator感兴趣,但我不想在使用它的每个组件下声明它,但仍然可以在应用程序中的任何地方使用它。
这是反应中存在的东西吗?我可以创建在整个应用程序的上下文中自动变为可用的标签吗?
analytics / i18n库如何起作用?您是否需要在需要翻译或跟踪的每个文件中导入它们?
这里的初学者。
答案 0 :(得分:0)
可以在React中使用全局变量 - 就像使用任何其他框架一样 - 但这并不是做事的“反应方式”。相关地,React中“app”的等价物只是顶级的根组件。
不应依赖全局变量,而应该在一个组件文件中使用(1)import
/ require
模块;或者,(2)将所需的函数和值从父组件传递到子组件。
要实现第一种方法,需要一个像Webpack或Browserify这样的捆绑器。因此,例如,如果想要使用像Jed
这样的i18n Gettext模块,可以将其实例化并将其导出到一个文件中,然后将import
或require
导出到任何组件文件中需要它。
至于第二种方法,可以将道具从父母传递给孩子或使用context
。虽然道具需要手动传递,但context
总是传递给整个子树。
在上一个示例中,您可以将Jed
函数放在context
中,但React团队会发出警告:“如果您必须使用上下文,请谨慎使用它,”并再次说,“只是因为在编写清晰代码时最好避免使用全局变量,所以在大多数情况下应避免使用上下文。“