Компоненты

Последнее обновление: 01.04.2022

ReactElement, который был рассмотрен в прошлой теме, позволяет создавать элементы, которые встраиваются на веб-страницу. Однако ReactElement плохо подходит для создания комплексной разметки HTML. Объекты ReactElement сложно использовать повторно в других аналогичных ситуациях, сложнее поддерживать.

И для решения этой проблемы в React используются компоненты. Компоненты проще обновлять и использовать повторно.

Компоненты аналогичны функциям JavaScript. Они хранят состояние с помощью свойств и возвращают элементы React, которые затем появляются на веб-странице.

Создание компонентов

Компоненты можно определить различными способами. Первый способ - функциональный. Например:

function Hello() {
  return <h1>Привет, Eugene</h1>;
}

Здесь определяется компонент Hello. Название компонентов должно начинаться с заглавной буквы.

Второй способ определения компонентов предполагает использование классов ES6:

class Hello extends React.Component {
  render() {
    return <h1>Привет, Eugene</h1>;
  }
}

Для рендеринга компонента в классе компонента обязательно должен быть определен метод render(), который возвращает создаваемый элемент на JSX.

Также для определения мы можем использовать стрелочные функции (arrow functions):

var Hello =() => {
    return (<h1>Привет, Eugene</h1>);
}

В целом все описанные выше способы будут равноценны.

Применение компонентов

Используем выше определенный компонент:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <div id="app"></div>
      
    <script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
    <script type="text/babel">
      function Hello() {
        return <h1>Привет, Eugene</h1>;
      }
      ReactDOM.createRoot(
            document.getElementById("app")
        )
        .render(
            <Hello />
        );
    </script>
</body>
</html>
Компоненты в React

Если рассмотреть поэтапно, то рендеринг компонента будет происходить следующим образом:

  1. Сначала устанавливаем элемент, в который будет производиться рендеринг, с помощью функции ReactDOM.createRoot()

  2. Для рендеринга компонента <Hello /> вызывается функция render()

  3. React вызывает компонент Hello

  4. Компонент Hello возвращает элемент <h1>Привет, Eugene</h1>

  5. React DOM обновляет стандартный DOM веб-страницы, чтобы она содержала элемент <h1>Привет, Eugene</h1>

Здесь важно отметить один момент. Вне зависимости от того, какой способ определения компонента мы используем, между названием класса/функции/стрелочной функции и элементом есть соответствие: класс/функция называется "Hello", и соответственно для рендеринга компонента применяется элемент <Hello />. При этом учитывается регистр. Причем можно использовать названия в элементов только в верхнем регистре ("Hello", но НЕ "hello"), поскольку элементы с называниями в нижнем регистре будут рассматриваться Reactом как валидные html-элементы.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850