我有一个希望尽快安装到window.app
变量中的对象,以便嵌套的组件可以在安装时引用。现在,在React之外,我通常会在window.onload()
的第一行上执行此操作,我想知道使用我正在学习的React 时最早的位置是什么。
我使用的是应用程序的componentDidMount
方法,但是嵌套组件首先触发了自己的componentDidMount
;应用的componentDidMount
似乎倒数第二。然后我发现了这个helpful lifecycle chart,现在我使用的是App的constructor
,它是在嵌套组件之前进行控制台日志记录,因此是一种改进。
App的constructor
是我们最早可以编写代码的地方吗?
答案 0 :(得分:3)
如果您希望它尽早执行并且不依赖于React,则可以将其完全置于react生态系统之外,并在引导React应用程序的ReactDOM.render
方法之前进行设置。
答案 1 :(得分:0)
正如评论中所建议的那样,除非绝对必要,否则直接将变量设置为window对象不是一个好主意。
相反,更好的方法是将变量作为道具向下传递。
根据您的评论,
好吧,它不仅仅是一个变量,它还是一个对象(类实例) 这正在修改在整个React中使用localStorage的方式 应用程式。具体来说,当组件与localStorage交互时,它 不会直接调用localStorage,而是window.app.setStorage。 您可以看到here想法的演示。
更好的方法是只为将具有set和get方法的组件制作一个组件,并在组件中使用localstorage。仅在需要它们的地方导入该组件。这样可以避免同时使用window对象,并使代码更具可读性。