1. Создание
компонента интерфейса в React
Рассмотрим пример
компонента, который отображает информацию об учебном курсе.
React-код (JSX):
function
CourseCard({ title, teacher }) {
return (
<div
className="course-card">
<h2>{title}</h2>
<p>Преподаватель: {teacher}</p>
</div>
);
}
function
App() {
return (
<div>
<CourseCard
title="WEB-технологии"
teacher="Иванов"
/>
<CourseCard
title="Базы данных"
teacher="Петров"
/>
</div>
);
}
export
default App;
Объяснение:
CourseCard —
отдельный компонент интерфейса.
App — основной
компонент приложения.
props — входные
данные, передаваемые компоненту.
title — название
учебного курса.
teacher — имя
преподавателя.
className —
способ указания CSS-класса в JSX.
export default —
экспортирует компонент для использования в других файлах.
Результат:
На странице
отображаются две карточки:
WEB-технологии
Преподаватель:
Иванов
Базы данных
Преподаватель:
Петров
Один компонент
CourseCard используется повторно с разными входными данными.
2. Изменение
состояния и реактивное обновление интерфейса
Рассмотрим пример
компонента, который позволяет добавлять учебные часы.
React-код (JSX):
import {
useState } from "react";
function
StudyHours() {
const [hours, setHours] = useState(0);
function addHour() {
setHours(hours + 1);
}
return (
<div>
<h2>Учебные часы: {hours}</h2>
<button onClick={addHour}>
Добавить час
</button>
</div>
);
}
export
default StudyHours;
Объяснение:
useState() —
создаёт состояние компонента.
hours — текущее
значение состояния.
setHours() —
функция обновления состояния.
onClick —
обработчик нажатия кнопки.
addHour() —
функция увеличения количества часов.
Результат:
Первоначально
отображается:
Учебные часы: 0
После первого
нажатия:
Учебные часы: 1
После второго
нажатия:
Учебные часы: 2
React
автоматически обновляет отображение после изменения состояния.
3. Создание SPA с
клиентской маршрутизацией
Рассмотрим пример
приложения, в котором пользователь может переходить между главной страницей и
страницей контактов без полной перезагрузки документа.
Для примера
используется React Router.
React-код (JSX):
import {
BrowserRouter,
Routes,
Route,
Link
} from
"react-router-dom";
function Home() {
return <h2>Главная страница
университета</h2>;
}
function
Contacts() {
return <h2>Контакты университета</h2>;
}
function
App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Главная</Link>
{" | "}
<Link
to="/contacts">Контакты</Link>
</nav>
<Routes>
<Route path="/"
element={<Home />} />
<Route
path="/contacts"
element={<Contacts
/>}
/>
</Routes>
</BrowserRouter>
);
}
export
default App;
Объяснение:
BrowserRouter —
включает клиентскую маршрутизацию.
Routes — содержит
определения маршрутов.
Route — связывает
URL с компонентом.
Link — создаёт
ссылку для перехода внутри SPA.
Home — компонент
главной страницы.
Contacts —
компонент страницы контактов.
Результат:
При открытии
адреса / отображается главная страница.
При переходе на
/contacts отображается страница контактов.
Переход между
экранами выполняется без полной перезагрузки HTML-документа.
Для работы
примера требуется установленный пакет react-router-dom и настройка сервера для
обработки прямых переходов по маршрутам SPA.