Ответ 1
Вы можете переместить логику обратного вызова в компонент, который вы монтируете, а затем использовать метод componentDidMount
в первый раз, когда компонент отображается в DOM, и componentDidUpdate
для последующих обновлений/рендеринга в DOM. Компонент будет доступен в реальном DOM через window.document
или с использованием метода getDOMNode
компонентов в обоих этих методах.
Это не совсем то же самое, что и обратный вызов визуализации. Стоит отметить, что если вы меняете состояние компонента, вы также можете передать функцию обратного вызова методу setState
для компонента, который будет применяться после обновления состояния компонентов (и любых изменений, внесенных в DOM).
Посмотрев исходный код React, чтобы подтвердить - при рендеринге нового корневого узла (в соответствии с вашим фрагментом кода) в DOM процесс синхронный, и обратный вызов (если он передан) запускается сразу после (https://github.com/facebook/react/blob/master/src/renderers/dom/client/ReactMount.js строки 570-582)