当它的DOM元素(包括所有子节点)实际加载到页面上并准备就绪时,我想在我的react.js组件上调用一个回调。具体来说,我有两个要渲染相同大小的组件,选择具有自然尺寸的任何一个组件的最大值。
看起来componentDidMount
并不是我真正想要的,因为每个组件仅被调用一次,但是我希望在组件完成渲染后再次调用我的回调。我以为可以将onLoad
事件添加到顶级DOM元素中,但是我想这仅适用于某些元素,例如<body>
和<img>
。
当它的DOM元素(包括所有子节点)实际加载到页面上并准备就绪时,我想在我的react.js组件上调用一个回调。具体来说,我有两个要渲染相同大小的组件,选择具有自然尺寸的任何一个组件的最大值。
看起来componentDidMount
并不是我真正想要的,因为每个组件仅被调用一次,但是我希望在组件完成渲染后再次调用我的回调。我以为可以将onLoad
事件添加到顶级DOM元素中,但是我想这仅适用于某些元素,例如<body>
和<img>
。
看起来像的组合componentDidMount
,并componentDidUpdate
会完成这项工作。当DOM可用时,第一个调用在初始渲染之后调用,一旦更新的DOM可用,则在任何后续渲染之后调用第二个调用。就我而言,我都让他们委托一个共同的职能来做同样的事情。
在现代浏览器中,它应该像
try() {
if (!$("#element").size()) {
window.requestAnimationFrame(try);
} else {
// do your stuff
}
};
componentDidMount(){
this.try();
}
我发现在这简单的包装代码componentDidMount
或componentDidUpdate
使用setTimeout
该浏览器的DOM已与阵营执行前的变化更新,0毫秒,确保时间setTimeout
的功能。
像这样:
componentDidMount() {
setTimeout(() => {
$("myclass") // $ is available here
}, 0)
}
这会将匿名函数放在JS事件队列中,以在当前运行的React堆栈框架完成后立即运行。
我将componentDidUpdate应用于表以使所有列都具有相同的高度。它与jquery中的$(window).load()相同。
例如: