ReactJS - DOM: руковод Beginner's Guide

Здравствуйте, будущие разработчики React! Я рад пригласить вас в увлекательное путешествие по миру ReactJS и Document Object Model (DOM). Кто-то, кто уже давно преподает информатику, видел, как многие студенты сначала мучаются с этими conceptами, но поверьте мне, как только вы это поймете, это будет как ездить на велосипеде - вы никогда не забудете!

ReactJS - DOM

Что такое DOM?

Прежде чем мы углубимся в relación между React и DOM, давайте начнем с азов. Представьте DOM как родословную вашего веб-страницы. Каждый элемент на вашей странице - будь то кнопка, абзац или изображение - это как член семьи в этом дереве. Точно так же, как вы можете изменить прическу или одежду члена семьи, вы можете манипулировать этими DOM-элементами, чтобы изменить的外观 и поведение вашего веб-страницы.

ReactDOM: Мост между React и браузером

Теперь познакомимся с нашим звездным игроком: ReactDOM. Представьте ReactDOM как super-эффективного личного помощника для React. Его основная задача - взять React-компоненты, которые вы создаете, и перевести их в то, что браузер может понять и отобразить.

Использование ReactDOM

Давайте начнем с простого примера:

import React from 'react';
import ReactDOM from 'react-dom';

const element = <h1>Привет, мир React!</h1>;
ReactDOM.render(element, document.getElementById('root'));

В этом фрагменте кода мы говорим ReactDOM, чтобы он взял наш element (простой заголовок h1) и отрендерил его внутри DOM-элемента с ID 'root'. Это как сказать вашему помощнику: "Эй, можешь положить эту картинку (наш React-элемент) в эту рамку (элемент 'root') на стене?"

ReactDOMServer: Отображение React на серверной стороне

Следующий пункт, ReactDOMServer. Это как двойник ReactDOM, который работает за кулисами. Пока ReactDOM занимается делами в браузере, ReactDOMServer помогает нам рендерить React-компоненты на сервере.

Вот простой пример:

import ReactDOMServer from 'react-dom/server';
import App from './App';

const html = ReactDOMServer.renderToString(<App />);

Этот код берет весь наш App компонент и преобразует его в строку HTML. Это как сделать снимок вашей React-приложения - это моментальный снимок, который можно быстро отправить в браузер.

ReactDOMClient: Новый парень в округе

С React 18 мы познакомились с ReactDOMClient. Это как младший, более энергичный брат ReactDOM, который всех о производительности и новых возможностях.

Вот как вы можете использовать его:

import React from 'react';
import { createRoot } from 'react-dom/client';

const root = createRoot(document.getElementById('root'));
root.render(<App />);

Instead of directly rendering our app, we're creating a 'root' first. This root is like a special pot where we can plant our React app and watch it grow with all the new features React 18 offers.

Применение ReactDOMClient

Давайте углубимся немного больше в то, как мы можем использовать ReactDOMClient в реальном сценарии:

import React from 'react';
import { createRoot } from 'react-dom/client';

function Counter() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Вы clicked {count} раз</p>
<button onClick={() => setCount(count + 1)}>
Нажмите меня
</button>
</div>
);
}

const root = createRoot(document.getElementById('root'));
root.render(<Counter />);

В этом примере мы создаем простое приложение-счетчик. Функция createRoot настраивает наше окружение React 18, позволяя нам использовать все новые функции, такие как автоматическое batchирование для лучшей производительности.

Сравнение методов ReactDOM

Чтобы помочь вам понять различные методы, о которых мы говорили, вот удобная таблица:

Метод Используется в Цель
ReactDOM.render() Браузер Рендерит React-элементы в DOM
ReactDOMServer.renderToString() Сервер Рендерит React-компоненты в строки HTML
ReactDOMClient.createRoot() Браузер Создает корень для функций React 18
root.render() Браузер Рендерит компоненты в созданный корень

Заключение

И вот мы и добрались до конца,朋友们! Мы прошли через ландшафт React DOM, от классического ReactDOM до серверного ReactDOMServer и finally к новому и блестящему ReactDOMClient. Помните, как при изучении любого нового языка (программирования или иного), практика делает perfect. Не бойтесь экспериментировать с этими conceptами в своих собственных проектах.

Как я всегда говорю своим студентам, программирование - это как готовка - сначала вы можете сделать mess, но с временем и практикой, вы будете готовить美味的 React-приложения в кратчайшие сроки! Так что вперед, запачкайте руки кодом и приятного React-инга!

Credits: Image by storyset