Это React-приложение на базе Vite, позволяющее искать персонажей из Rick and Morty API по имени, просматривать информацию о них и переключаться между страницами с помощью пагинации.
- Основной компонент приложения.
- Хранит состояния:
query
— строка поиска;characters
— массив найденных персонажей;page
— текущая страница;totalPages
— общее количество страниц.
- Отдельный компонент для поля поиска и кнопки
Search
. - Поддерживает:
- ввод текста;
- обновление состояния
query
; - нажатие клавиши
Enter
или кнопки для запуска поиска.
- Отображает карточку персонажа с:
- именем;
- изображением;
- видом (species);
- статусом;
- последним местоположением (location).
- Происходит по имени персонажа (
name=...
) через API. - Реализован debounce: запрос отправляется через 400 мс после прекращения ввода.
- Поиск чувствителен к опечаткам, но регистр не имеет значения.
- При изменении
query
обнуляется страница (page
).
- Используются кнопки Prev и Next.
- При переключении:
- обновляется параметр
page
в URL; - делается новый запрос к API;
- кнопки отключаются на первой и последней страницах.
- обновляется параметр
- Всего страниц —
totalPages
, полученные изdata.info.pages
.
const url = \`https://rickandmortyapi.com/api/character?\${search ? \`name=\${search}&\` : ''}page=\${page}\`;
- Формирует правильный URL с учётом:
name
(если заданsearch
);page
(всегда присутствует);
- Используется
fetch()
с.then()
для получения и обработки данных.
- Если API возвращает ошибку (
data.error
):- очищается список персонажей (
setCharacters([])
); - обнуляется общее количество страниц (
setTotalPages(1)
).
- очищается список персонажей (
- Используется шрифт Montserrat через Google Fonts.
.card-list
реализует адаптивную сетку карточек..character-card:hover
даёт лёгкое поднятие и тень..pagination
оформлена с кнопками и счётчиком страниц.- Строгая цветовая палитра: зелёные кнопки, оранжевые метки, белый фон.
# Установить зависимости
npm install
# Запустить проект в режиме разработки
npm run dev
# Собрать продакшн-версию
npm run build
Используется открытый REST API: https://rickandmortyapi.com/api/character
- React + Vite
- React Hooks (
useState
,useEffect
) - Fetch API
- CSS Flexbox
- Google Fonts (Montserrat)