何时调用React.render()回调?

时间:2015-06-04 11:22:00

标签: javascript reactjs

React.render(<MyComponent/>, mainNode, function() {
    console.log('2');
});
console.log('1');

打印

2
1

此外,回调中的scrollTop()不起作用。如果我在render()返回后调用它,它就可以工作。

React.render()是否同步?

函数返回时是否呈现DOM?

什么时候回叫?在回调中我想做什么?

1 个答案:

答案 0 :(得分:13)

您可以将回调逻辑移动到正在挂载的组件中,然后在第一次将组件呈现给DOM时使用componentDidMount方法,并将componentDidUpdate用于后续更新/呈现给DOM。该组件将通过window.document在真实DOM中提供,或者在这两种方法中使用组件getDOMNode方法。

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

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