Рендеринг элементов React
В React 18 рендеринг элементов имеет некоторые изменения по сравнению с предыдущими версиями, особенно при использованииReactDOM.createRootи новых конкурентных возможностей. Ниже приведён подробный пример и объяснение, показывающие, как рендерить элементы в React 18.
Пример
import ReactDOM from 'react-dom/client';
// Создайте простой компонент React
function App() {
return <h1>Привет, React 18!</h1>;
}
// Получить контейнер DOM с id "example" и создать корневой узел React
const root = ReactDOM.createRoot(document.getElementById("example"));
// Отрисовать компонент React в корневом узле DOM
root.render(<App />);
React-элементы — это наименьшие строительные блоки приложений React. Они описывают то, что вы хотите видеть на экране. React-элементы — это неизменяемые объекты; после создания их нельзя изменить.
const element = <h1>Hello, world!</h1>;
В отличие от элементов DOM браузера, элементы в React на самом деле являются обычными объектами. React DOM гарантирует, что содержимое данных DOM браузера остаётся согласованным с элементами React.
Рендеринг элемента в DOM
Сначала мы добавляемid="example"к<div>:
<div id="example"></div>
Всё содержимое внутри этого div будет управляться React DOM, поэтому мы называем его "корневым" узлом DOM.
При разработке приложений с использованием React мы обычно определяем только один корневой узел. Но если вы внедряете React в существующий проект, вам может потребоваться определить корневые узлы React отдельно в разных частях.
Чтобы отрисовать элемент React в корневой узел DOM, мы передаём их все в методroot.render(), чтобы отрисовать его на странице:
Пример
Попробуйте »
root.renderМетод выполняет рендеринг элемента в корневой узел, созданный ранее, поэтому элемент будет отображаться внутри DOM-элемента с id "example".
Обновление рендеринга элемента
Элементы React неизменяемы. После создания элемента вы не можете изменить его содержимое или атрибуты.
Единственный способ обновить пользовательский интерфейс — создать новый элемент и передать его в метод ReactDOM.render():
Давайте рассмотрим этот пример с таймером:
Пример
Попробуйте »
В приведённом выше примере ReactDOM.render() вызывается один раз в секунду с помощью метода setInterval().
Мы можем инкапсулировать отображаемую часть; в следующем примере для её представления используется функция:
Пример
Попробуйте »
Помимо функций, мы также можем создать класс ES6 React.Component, который инкапсулирует отображаемые элементы. Обратите внимание, что в методе render() нужно использоватьthis.propsвместоprops:
Пример
Попробуйте »
Другие расширенияReact обновляет только необходимое
Стоит отметить, что React DOM сначала сравнивает различия в содержимом элементов до и после, и во время рендеринга обновляет только те части, которые изменились.