Введение в компоненты React

Взглянем на любой сайт. Он состоит из набора независимых блоков: хедер, сайдбары, футер, контент. Можно сказать, что эти блоки и есть компоненты в том смысле, в котором подразумевается в React.

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

Аналогичным образом дело обстоит в React - сайт строится из набора компонентов, которые в свою очередь могут содержать другие компоненты.

В React каждый компонент представляет собой отдельный модуль. Обычно разработка начинается с главного компонента App, который содержит в себе остальные.

Давайте потренируемся создавать новые компоненты.

Пусть для примера нам нужен компонент, выводящий данные продукта. Для этого нам нужно в рабочей папке создать файл Product.js и добавить в него следующий код:

import React from 'react'; function Product() { return <p> product </p>; } export default Product;

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

Давайте теперь выведем наш созданный компонент в компоненте App. Пусть сейчас наш App имеет следующий код:

import React from 'react'; function App() { return <div> text </div>; } export default App;

Для начала нам нужно импортировать созданный нами компонент с продуктом:

import React from 'react'; import Product from './Product'; // импортируем продукт function App() { return <div> text </div>; } export default App;

После такого импорта внутри компонента App можно использовать компонент Product.

Как использовать

Каждому подключенному компоненту соответствует свой JSX тег. К примеру, у нас есть компонент Product, а значит ему соответствует тег <Product />.

Название тега компонента обязательно следует писать с большой буквы, чтобы React мог отличить вызов компонента от использования тега HTML.

Итак, давайте внутри компонента App используем компонент Product, написав соответствующий ему тег:

import React from 'react'; import Product from './Product'; function App() { return <div> <Product /> </div>; } export default App;

В результате после рендиренга получится следующее:

<div> <p> product </p> </div>

Сделайте компонент User, который будет выводить данные юзеров. Пусть сейчас этот компонент просто выводит какой-нибудь текст. Используйте этот компонент в компоненте App.

Несколько экземляров компонента

Можно вставить несколько продуктов. Для этого нужно просто написать несколько тегов компонента:

import React from 'react'; import Product from './Product'; function App() { return <div> <Product /> <Product /> <Product /> </div>; } export default App;

В результате после рендиренга получится следующее:

<div> <p> product </p> <p> product </p> <p> product </p> </div>

Добавьте в компонент App несколько экземляров компонента User, созданного вами в предыдущей задаче.