const element = <h1>Hello, world</h1>;
В отличие от элементов DOM браузера, элементы React являются обычными объектами и дешевы в создании. React DOM заботится об обновлении HTML DOM для соответствия элементам React.
Note
Можно перепутать элементы с более широко известной концепцией «компонентов». Мы представим компоненты в следующем разделе. Элементы – это то, из чего компоненты «сделаны», и мы рекомендуем вам прочитать этот раздел, прежде чем продолжать.
Рендеринг элемента в DOM
предположим, что где-то в вашемHTML файле есть <div>:
<div id="root"></div>
Мы называем это «корневым» узлом DOM, потому что всем внутри него будет управлять React DOM.
Приложения, написанные только с на React, обычно имеют один корневой узел DOM. Если вы интегрируете React в существующее приложение, у вас может быть много больше изолированных корневых узлов DOM.
Чтобы визуализировать элемент React в корневом узле DOM, используйте ReactDOM.render():
const element = <h1>Hello, world</h1>;
ReactDOM.render(
element,
document.getElementById('root')
);Обновление DOM елемента
React элементы неизменяемы (иммутабельны). Создав элемент, вы не сможете изменить его дочерние элементы или атрибуты. Элемент похож на один кадр в фильме: он представляет собой пользовательский интерфейс в определенный момент времени.
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(
element,
document.getElementById('root')
);
}
setInterval(tick, 1000);Note
На практике большинство приложений React вызывают только ReactDOM.render() только раз. В следующих разделах мы узнаем, как такой код инкапсулируется в компоненты состояния. Мы рекомендуем вам не пропускать темы, потому что они строятся друг на друге.
React обновляет только то что необходимо
React DOM сравнивает элемент и его дочерние элементы с предыдущим состоянием и обновляет DOM там где необходимо желаемое состояние.
Вы можете проверить, проверив последний пример с помощью инструментов разработчика:

Несмотря на то, что мы при каждом тике, создаем новый элемент, описывающий DOM, обновляется только часть содержимого которая изменилась.
Исходя из нашего опыта, размышление о том, как пользовательский интерфейс должен выглядеть в данный момент, а не на то, как нужно менять его со временем, устраняет целый ряд ошибок.

