12 промтов для создания React/Next.js приложений: от компонентов до оптимизации

В 2026 году AI-ассистенты (ChatGPT, Claude, Copilot) стали неотъемлемой частью рабочего процесса фронтенд-разработчика. Правильный промпт позволяет за секунды получить каркас компонента, страницу Next.js с серверным рендерингом или кастомный хук. Эта подборка содержит 12 проверенных промтов, которые я сам использую в проектах. Каждый промт сопровождается описанием задачи, готовым текстом для AI и примером сгенерированного кода. Промты ориентированы на TypeScript, React 19 и Next.js 15 (App Router) — актуальные версии на июль 2026.

Важно: Все примеры кода основаны на официальной документации React и Next.js. Перед использованием адаптируйте промты под свои требования.

1. Базовый функциональный компонент с TypeScript

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

Промт:

Напиши React-компонент UserCard на TypeScript. Компонент принимает пропсы: name (string), email (string), avatarUrl (string, опционально). Компонент рендерит карточку с аватаром (если передан), именем и email. Используй семантическую вёрстку. Включи export default.

Пример результата:

interface UserCardProps {
  name: string;
  email: string;
  avatarUrl?: string;
}

const UserCard: React.FC<UserCardProps> = ({ name, email, avatarUrl }) => {
  return (
    <article className="user-card">
      {avatarUrl && <img src={avatarUrl} alt={name} className="avatar" />}
      <h2>{name}</h2>
      <p>{email}</p>
    </article>
  );
};

export default UserCard;

2. Страница Next.js App Router с метаданными

Задача: Сгенерировать страницу профиля пользователя с динамическим роутингом и экспортом метаданных для SEO.

Промт:

Создай файл страницы Next.js App Router для маршрута /profile/[id]. Компонент страницы должен быть асинхронным, получать параметр id через props.params. Добавь генерацию метаданных через функцию generateMetadata. На странице выведи заголовок "Профиль пользователя {id}".

Пример результата:

import { Metadata } from 'next';

type Props = { params: { id: string } };

export async function generateMetadata({ params }: Props): Promise<Metadata> {
  return { title: `Профиль пользователя ${params.id}` };
}

export default async function ProfilePage({ params }: Props) {
  return <h1>Профиль пользователя {params.id}</h1>;
}

3. Кастомный хук useFetch с кешированием

Задача: Универсальный хук для запросов к API с поддержкой сигнала отмены и простого кеширования.

Промт:

Напиши React-хук useFetch на TypeScript. Он принимает url (string) и опциональные опции fetch. Возвращает { data, loading, error }. Используй useEffect с AbortController для отмены запроса при размонтировании. Добавь in-memory кеш по ключу url.

Пример кода (фрагмент):

const cache = new Map<string, any>();

export function useFetch<T>(url: string, options?: RequestInit) {
  const [data, setData] = useState<T | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<Error | null>(null);

  useEffect(() => {
    if (cache.has(url)) {
      setData(cache.get(url));
      setLoading(false);
      return;
    }
    const controller = new AbortController();
    fetch(url, { ...options, signal: controller.signal })
      .then(res => res.json())
      .then(result => { cache.set(url, result); setData(result); })
      .catch(err => { if (err.name !== 'AbortError') setError(err); })
      .finally(() => setLoading(false));
    return () => controller.abort();
  }, [url]);

  return { data, loading, error };
}

4. Форма с валидацией (React Hook Form)

Задача: Форма регистрации с полями email, password, confirmPassword и валидацией на стороне клиента.

Промт:

Создай компонент формы регистрации с использованием React Hook Form. Поля: email (required, email), password (required, minLength 8), confirmPassword (required, must match password). Выводи сообщения об ошибках под каждым полем. При успешной отправке выведи alert с данными формы.

Пример: AI сгенерирует код с useForm, register, errors. Адаптируйте под свою UI-библиотеку.

5. Таблица с сортировкой и фильтрацией

Задача: Компонент data-table, который принимает массив объектов и отображает их в таблице с возможностью сортировки по столбцам и текстового фильтра.

Промт:

Напиши React-компонент DataTable на TypeScript. Он принимает generic-параметр T extends object, columns (массив объектов с key, label, sortable?) и rows (массив T). Реализуй сортировку при клике на заголовок (по возрастанию/убыванию) и текстовый фильтр сверху. Используй useState для состояния.

6. Серверный компонент Next.js для списка постов

Задача: Асинхронный серверный компонент, который получает данные с внешнего API и рендерит список постов.

Промт:

Создай серверный компонент PostList в Next.js App Router. Он делает fetch к https://jsonplaceholder.typicode.com/posts и рендерит список ссылок на каждый пост (заголовок, ссылка /posts/[id]). Компонент должен быть экспортирован по умолчанию. Используй Suspense для ленивой загрузки.

7. Компонент с Tailwind CSS

Задача: Реализовать Hero-секцию с заголовком, описанием и кнопкой, используя Tailwind CSS.

Промт:

Напиши React-компонент HeroSection с пропсами title, description, ctaText, ctaLink. Используй Tailwind CSS для стилизации: центрирование, градиентный фон, анимация при наведении. Код должен быть чистым и адаптивным.

8. React Context Provider

Задача: Создать контекст темы (светлая/тёмная) с провайдером и кастомным хуком для доступа.

Промт:

Создай ThemeContext с типом 'light' | 'dark', провайдер ThemeProvider (использует useState и localStorage для сохранения темы), и кастомный хук useTheme, который выбрасывает ошибку, если используется вне провайдера.

9. Модальное окно с Portal

Задача: Компонент Modal, который рендерится в портале (ReactDOM.createPortal) и закрывается по нажатию Escape или клику на оверлей.

Промт:

Напиши React-компонент Modal с пропсами isOpen, onClose, children. Используй createPortal для рендера в элемент с id='modal-root'. Добавь обработчик клавиши Escape и клик по backdrop для закрытия. Анимацию появления/исчезания можно опустить.

10. Оптимизированное изображение в Next.js

Задача: Компонент, использующий next/image с правильной конфигурацией remotePatterns и placeholder blur.

Промт:

Создай компонент OptimizedImage на Next.js, который принимает src (string), alt (string), width, height и className. Используй next/image, добавь remotePatterns в next.config для внешних доменов (если нужно). Используй placeholder='blur' и blurDataURL.

11. Тест для компонента (Jest + Testing Library)

Задача: Написать unit-тест для UserCard (из первого промта).

Промт:

Напиши тест с Jest и React Testing Library для компонента UserCard. Проверь: рендер имени, email, условие отображения аватара. Используй describe/it. Импортируй @testing-library/react.

12. Скелетон загрузки

Задача: Компонент-заглушку для имитации загрузки списка карточек.

Промт:

Создай SkeletonCard — компонент, который рендерит серые блоки с анимацией пульсации (CSS-анимация). Принимает пропс count (количество карточек). Используй Tailwind CSS animate-pulse.

Заключение

Приведённые промты покрывают 90% типовых задач фронтенд-разработчика на React/Next.js. Главное правило: чем точнее вы описываете входные данные, структуру и требования, тем качественнее результат. Рекомендую всегда уточнять версии библиотек и стиль кода (например, «используй функциональные компоненты, React 19, TypeScript strict mode»). Сохраняйте эту шпаргалку и адаптируйте под свои проекты. Удачи в кодинге!

← Все статьи

Комментарии

Читайте также