Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 初始化ReactJS应用程序之前是否需要等待窗口加载事件?_Javascript_Html_Reactjs_Dom_Virtual Dom - Fatal编程技术网

Javascript 初始化ReactJS应用程序之前是否需要等待窗口加载事件?

Javascript 初始化ReactJS应用程序之前是否需要等待窗口加载事件?,javascript,html,reactjs,dom,virtual-dom,Javascript,Html,Reactjs,Dom,Virtual Dom,是否有任何理由在初始化react应用程序之前等待窗口加载事件 window.addEventListener('load', () => { ReactDOM.render( <h1>Reactastic!</h1>, document.getElementById('rootElement') ); }, false); window.addEventListener('load',()=>{ ReactDOM.render( 反

是否有任何理由在初始化react应用程序之前等待窗口加载事件

window.addEventListener('load', () => {
   ReactDOM.render(
     <h1>Reactastic!</h1>,
     document.getElementById('rootElement')
   );
}, false);
window.addEventListener('load',()=>{
ReactDOM.render(
反复无常!,
document.getElementById('rootElement')
);
},假);
只要
rootElement
是在html中定义的,而不是由javascript动态隐藏或创建的,是否有可能它不能及时用于resact-to-init


编辑:这也假设javascript加载在页脚中。

假设javascript加载在页面底部,没有理由等待文档加载,因为DOM中已经有了
rootElement

ReactDom渲染器将挂载容器元素中的所有内容,因此,ReactDom需要(*)的唯一内容是render调用时的现有“根”元素。 根据您的假设,这是正确的,因此在这种情况下不需要等待onload()


(*)当然,任何在rendering()之后计算的脚本都可以(也可能会)破坏“根”元素中的dom,如果您在html之后找到JavaScript,则应该加载RoolElement。老实说,以前从未想过,我只是使用默认的react生命周期方法。。。您还应该假设这是最后一个脚本元素,或者以下所有脚本(包括html5异步脚本)都不会侵入性地更改“根”中呈现的dom树……这在所有浏览器中都能保证100%的时间吗?假设html是正常设置的(并且没有被其他脚本以任何方式操纵),javascript加载到页脚中,那么它在所有浏览器中都是正确的。如果将脚本添加到
rootElement
下面的DOM中,它将由
document.getElementById
document.querySelector
API返回。