在初始化ReactJS应用程序之前是否需要等待窗口加载事件?
是否有任何理由在初始化反应应用程序之前等待窗口加载事件?在初始化ReactJS应用程序之前是否需要等待窗口加载事件?
window.addEventListener('load',() => {
ReactDOM.render(
<h1>Reactastic!</h1>,
document.getElementById('rootElement')
);
}, false);
只要rootElement
是HTML的定义,而不是隐藏或由JavaScript动态创建的,是否有可能,它不会提供及时反应初始化?
编辑:这也假设JavaScript加载在页脚中。
假设javascript被加载在页面的底部,没有理由等待文档被加载,因为rootElement
已经在DOM中可用。
是否保证100%的时间所有浏览器?假设html设置正常(并且不以其他脚本以任何方式操作),并且javascript被加载到页脚 –
是的,它适用于所有浏览器。如果脚本被添加到'rootElement'下面的DOM中,它将由'document.getElementById'或'document.querySelector' API返回。 –
ReactDom渲染器将在容器元素中安装所有东西,所以唯一反应需求(*)是渲染调用中现有的“根”元素。 根据你的假设,这是成立的,因此你不需要在这种情况下等待onload()。
(*),当然,渲染后(评估任何脚本)侵入性操作的“根”元素中的DOM可以(而且可能会)打破反应逻辑...
如果您找到您的JavaScript的HTML后那么应该加载rooltElement。 – CuriousSuperhero
说实话,从来没有想过它,我只是使用默认的React生命周期方法...会尝试。 – assembler
你还应该假设这是最后一个脚本元素,或者所有后续脚本(包括html5异步脚本)都不会侵入性地更改“根”内部的渲染dom树...... –