Spec-Zone.ru › React

Ваш первый компонент

Компоненты — это одно из основных понятий React. Они являются основой для создания пользовательских интерфейсов (UI), что делает их идеальным местом для начала вашего путешествия с React!

Вы узнаете

  • Что такое компонент
  • Какую роль компоненты играют в приложении React
  • Как создать свой первый компонент React

Компоненты: строительные блоки пользовательского интерфейса

В веб-разработке HTML позволяет нам создавать богатые структурированные документы с помощью встроенного набора тегов, таких как <h1> и <li>:

<article>
  <h1>My First Component</h1>
  <ol>
    <li>Components: UI Building Blocks</li>
    <li>Defining a Component</li>
    <li>Using a Component</li>
  </ol>
</article>

Этот разметка представляет эту статью <article>, её заголовок <h1>, и (сокращённый) список содержания в виде упорядоченного списка <ol>. Такая разметка, совместно со стилями CSS и интерактивностью JavaScript, лежит в основе каждого сайдбара, аватара, модального окна, выпадающего списка — каждого элемента пользовательского интерфейса, который вы видите в веб-приложениях.

React позволяет объединить вашу разметку, CSS и JavaScript в пользовательские «компоненты», переиспользуемые элементы пользовательского интерфейса для вашего приложения. Код списка содержания, который вы видели выше, может быть преобразован в <TableOfContents /> компонент, который можно отображать на каждой странице. Под капотом он по-прежнему использует те же HTML-теги, такие как <article>, <h1>, и т.д.

Так же, как и с HTML-тегами, вы можете комбинировать, упорядочивать и вкладывать компоненты для проектирования целых страниц. Например, страница документации, которую вы читаете, состоит из компонентов React:

<PageLayout>
  <NavigationHeader>
    <SearchBar />
    <Link to="/docs">Docs</Link>
  </NavigationHeader>
  <Sidebar />
  <PageContent>
    <TableOfContents />
    <DocumentationText />
  </PageContent>
</PageLayout>

По мере роста вашего проекта вы заметите, что многие ваши проекты можно создавать, переиспользуя уже написанные вами компоненты, что ускорит разработку. Наш список содержания выше можно добавить на любой экран с <TableOfContents />! Вы даже можете начать проект с тысяч компонентов, которые публикует сообщество разработчиков React, таких как Chakra UI и Material UI.

Определение компонента

Традиционно, при создании веб-страниц, веб-разработчики размечали контент и затем добавляли интерактивность, вставляя фрагменты JavaScript. Это работало отлично, когда интерактивность была дополнительной возможностью. Сейчас это ожидается для многих сайтов и всех приложений. React ставит интерактивность на первое место, сохраняя при этом использование той же технологии: компонент React — это функция JavaScript, которую можно дополнить разметкой. Вот как это выглядит (вы можете отредактировать пример ниже):

export default function Profile() {
  return (
    <img
      src="https://i.imgur.com/MK3eW3Am.jpg"
      alt="Katherine Johnson"
    />
  )
}

И вот как создать компонент:

Шаг 1: Экспорт компонента

Префикс export default — это стандартный синтаксис JavaScript (не специфичный для React). Он позволяет пометить главную функцию в файле, чтобы потом импортировать её из других файлов. (Подробнее об импорте в Импортирование и экспорт компонентов!)

Шаг 2: Определение функции

С помощью function Profile() { } вы определяете функцию JavaScript с именем Profile.

Ловушка

Компоненты React — это обычные функции JavaScript, но их имена должны начинаться с большой буквы, иначе они не будут работать!

Шаг 3: Добавление разметки

Компонент возвращает тег <img /> с атрибутами src и alt. <img /> записывается как HTML, но на самом деле это JavaScript под капотом! Этот синтаксис называется JSX, и он позволяет вам встраивать разметку внутри JavaScript.

Оператор возврата может быть записан на одной строке, как в этом компоненте:

return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;

Но если ваша разметка не находится на одной строке с ключевым словом return, вы должны заключить её в пару скобок:

return (
  <div>
    <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  </div>
);

Ловушка

Без скобок любой код на строках после return будет проигнорирован!

Использование компонента

Теперь, когда вы определили свой Profile компонент, вы можете вложить его в другие компоненты. Например, вы можете экспортировать Gallery компонент, который использует несколько Profile компонентов:

function Profile() {
  return (
    <img
      src="https://i.imgur.com/MK3eW3As.jpg"
      alt="Katherine Johnson"
    />
  );
}

export default function Gallery() {
  return (
    <section>
      <h1>Amazing scientists</h1>
      <Profile />
      <Profile />
      <Profile />
    </section>
  );
}

Что видит браузер

Обратите внимание на разницу в регистре:

  • <section> — строчная буква, поэтому React понимает, что мы ссылаемся на HTML-тег.
  • <Profile /> начинается с заглавной буквы P, поэтому React понимает, что мы хотим использовать наш компонент с именем Profile.

И Profile содержит ещё больше HTML: <img />. В итоге, вот что видит браузер:

<section>
  <h1>Amazing scientists</h1>
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>

Вложенность и организация компонентов

Компоненты — это обычные функции JavaScript, поэтому вы можете хранить несколько компонентов в одном файле. Это удобно, когда компоненты относительно небольшие или тесно связаны друг с другом. Если этот файл становится перегруженным, вы всегда можете перенести Profile в отдельный файл. Вы вскоре узнаете, как это сделать на странице об импорте.

Поскольку компоненты Profile отображаются внутри Gallery — даже несколько раз! — мы можем сказать, что Gallery является родительским компонентом, отображающим каждый Profile как «дочерний». Это часть магии React: вы можете определить компонент один раз, а затем использовать его в любом месте и любое количество раз.

Ловушка

Компоненты могут отображать другие компоненты, но никогда не следует вкладывать их определения:

export default function Gallery() {
  // 🔴 Never define a component inside another component!
  function Profile() {
    // ...
  }
  // ...
}

Приведенный выше фрагмент кода очень медленный и приводит к ошибкам. Вместо этого определяем каждый компонент на верхнем уровне:

export default function Gallery() {
  // ...
}

// ✅ Declare components at the top level
function Profile() {
  // ...
}

Когда дочернему компоненту нужны данные от родительского, передавайте их через props вместо вложения определений.

Подробный анализ

Компоненты от начала до конца

Ваше приложение React начинается с «корневого» компонента. Обычно он создаётся автоматически при запуске нового проекта. Например, если вы используете CodeSandbox или фреймворк Next.js, корневой компонент определяется в pages/index.js. В этих примерах вы экспортировали корневые компоненты.

Большинство приложений React используют компоненты от начала до конца. Это означает, что вы будете использовать компоненты не только для переиспользуемых элементов, таких как кнопки, но и для более крупных элементов, таких как сайдбары, списки и, в конечном счёте, целые страницы! Компоненты — удобный способ организовать код и разметку пользовательского интерфейса, даже если некоторые из них используются только один раз.

Фреймворки на основе React идут ещё дальше. Вместо использования пустого HTML-файла и предоставления React возможности «взять на себя» управление страницей с помощью JavaScript, они также генерируют HTML автоматически из ваших компонентов React. Это позволяет вашему приложению отображать некоторый контент до загрузки кода JavaScript.

Тем не менее, многие веб-сайты используют React только для добавления интерактивности к существующим HTML-страницам. У них есть много корневых компонентов вместо одного для всей страницы. Вы можете использовать столько React, сколько вам нужно — или вообще не использовать.

Резюме

Вы только что получили первый опыт работы с React! Давайте подведём итоги основных моментов.

  • React позволяет создавать компоненты, переиспользуемые элементы пользовательского интерфейса для вашего приложения.

  • В приложении React каждый элемент пользовательского интерфейса является компонентом.

  • Компоненты React — это обычные функции JavaScript, за исключением:

    1. Их имена всегда начинаются с большой буквы.
    2. Они возвращают JSX-разметку.

Попробуйте выполнить некоторые задачи

Задача 1 из 4:
Экспорт компонента

Эта песочница не работает, потому что корневой компонент не экспортирован:

function Profile() {
  return (
    <img
      src="https://i.imgur.com/lICfvbD.jpg"
      alt="Aklilu Lemma"
    />
  );
}

Попробуйте исправить это самостоятельно, прежде чем смотреть решение!

© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://react.dev/learn/your-first-component

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API