什么时候调用React.render()回调?

When is React.render() callback called?

本文关键字:回调 render 调用 React 什么时候      更新时间:2023-09-26
React.render(<MyComponent/>, mainNode, function() {
    console.log('2');
});
console.log('1');

打印

2
1

同样,回调中的scrollTop()不起作用。如果我在render()返回后调用它,它就会工作。

React.render()同步吗?

DOM在函数返回时呈现吗?

何时调用回调?我想在回调中做什么?

您可以将回调逻辑移动到您正在安装的组件中,然后在组件第一次渲染到DOM时使用componentDidMount方法,然后在后续更新/渲染到DOM时使用componentDidUpdate方法。组件将通过window.document或在这两种方法中使用组件的getDOMNode方法在实际DOM中可用。

这与渲染回调本身并不完全相同。值得注意的是,如果你正在改变组件的状态,你也可以给组件的setState方法传递一个回调函数,这个函数将在组件状态被更新(并且任何更改呈现给DOM)后应用。

查看React源代码以确认-当将新的根节点(根据您的代码片段)呈现到DOM中时,该过程是同步的,并且回调(如果通过)在(https://github.com/facebook/react/blob/master/src/renderers/dom/client/ReactMount.js第570-582行)之后立即触发