Reactjs React.js,`DOMContentLoaded`是否等于`componentDidMount`?

Reactjs React.js,`DOMContentLoaded`是否等于`componentDidMount`?,reactjs,dom,Reactjs,Dom,人们总是说,您可以在componentDidMount中获取dom 这是否意味着componentDidMount和DOMContentLoaded是同步的,还是意味着当componentDidMount时,DOMContentLoaded事件总是准备就绪?当。因此,在整个网页生命周期中,此事件只触发一次组件didmount,在呈现React组件时调用。因此,componentDidMount完全有可能被多次调用,尽管是针对同一组件类的完全不同的实例 是的,当调用componentDidMoun

人们总是说,您可以在
componentDidMount
中获取
dom


这是否意味着
componentDidMount
DOMContentLoaded
是同步的,还是意味着当
componentDidMount
时,
DOMContentLoaded
事件总是准备就绪?

当。因此,在整个网页生命周期中,此事件只触发一次<另一方面,代码>组件didmount,在呈现React组件时调用。因此,
componentDidMount
完全有可能被多次调用,尽管是针对同一组件类的完全不同的实例


是的,当调用
componentDidMount
事件时,浏览器的DOM始终处于“就绪状态”。

DOMContentLoaded
之前触发react
componentDidMount
,DOM在此就绪

查看此演示中的控制台日志:

它记录了以下内容:

componentDidMount: React rendered!
DOMContentLoaded before class: React rendered!
DOMContentLoaded after class: React rendered!
DOMContentLoaded in constructor: React rendered!
DOMContentLoaded in render: React rendered!
DOMContentLoaded in componentDidMount: React rendered!
DOMContentLoaded after ReactDOM.render: React rendered!
完整代码:

document.addEventListener('DOMContentLoaded',函数(事件){
console.log('DOMContentLoaded before class:',document.getElementById('app').textContent);
});
类应用程序扩展了React.Component{
构造函数(){
超级();
document.addEventListener('DOMContentLoaded',函数(事件){
console.log('DOMContentLoaded in constructor:',document.getElementById('app').textContent);
});
}
componentDidMount(){
document.addEventListener('DOMContentLoaded',函数(事件){
console.log('DOMContentLoadedinComponentDidMount:',document.getElementById('app').textContent);
});
console.log('componentDidMount:',document.getElementById('app').textContent);
}
render(){
document.addEventListener('DOMContentLoaded',函数(事件){
console.log('domcontentloadedinrender:',document.getElementById('app').textContent);
});
返回(
反应!
);
}
}
document.addEventListener('DOMContentLoaded',函数(事件){
console.log('DOMContentLoaded after class:',document.getElementById('app').textContent);
});
ReactDOM.render(
,
document.getElementById('app')
);
document.addEventListener('DOMContentLoaded',函数(事件){
console.log('ReactDOM.render:'之后加载的DOMContentLoaded',document.getElementById('app').textContent);
});

谢谢。当我使用时,我会反应一段时间。我清楚地知道
DOMContentLoaded
componentDidMount
之间的区别,那么什么是附加侦听器的最佳位置呢?我正在附加一个事件侦听器,但似乎DOM中还没有元素,因此显示
无法读取null的属性“addEventListener”