15 промтов для React Native: компоненты, навигация и работа с API

15 промтов для React Native: компоненты, навигация и работа с API

React Native — одна из самых популярных платформ для кроссплатформенной мобильной разработки. По данным Statista за 2025 год, её используют более 42% разработчиков мобильных приложений. Однако даже опытные программисты тратят до 30% времени на рутинные задачи: написание UI-компонентов, настройку навигации и интеграцию с бэкендом. Эта подборка промтов для AI-ассистентов (например, ChatGPT, Claude или Gemini) поможет ускорить разработку в 2–3 раза. Каждый промт — готовый шаблон, который можно скопировать, вставить и адаптировать под свой проект.

Раздел 1: UI-компоненты (5 промтов)

UI — лицо приложения. React Native предлагает встроенные компоненты (View, Text, Button), но часто требуется кастомная логика. Вот промты для типовых задач.

Промт 1: Создание кастомной кнопки с анимацией нажатия

Назначение: Быстро сгенерировать кнопку с эффектом ripple (Android) или scale (iOS).
Промт:

Создай компонент React Native (TypeScript) для кастомной кнопки с анимацией нажатия. Используй Animated API. Кнопка должна принимать пропсы: title (string), onPress (function), style (optional). Анимация: при нажатии масштаб уменьшается до 0.95, при отпускании возвращается к 1.0. Добавь поддержку accessibilityLabel. Предоставь полный код компонента и пример использования в функциональном компоненте.

Пример использования:

import AnimatedButton from './AnimatedButton';

<AnimatedButton
  title="Нажми меня"
  onPress={() => Alert.alert('Кнопка нажата')}
  style={{ backgroundColor: '#6200EE', padding: 12 }}
/>

Пояснение: Такой промт экономит время на написание анимаций вручную. Компонент готов к интеграции — нужно только скопировать код и настроить стили под дизайн-систему.

Промт 2: FlatList с pull-to-refresh и lazy loading

Назначение: Список с подгрузкой данных при прокрутке и обновлением свайпом вниз.
Промт:

Напиши компонент React Native (JavaScript) с FlatList, который поддерживает pull-to-refresh и бесконечную прокрутку (lazy loading). Используй useState и useEffect. Данные должны загружаться с имитацией API (setTimeout с рандомными данными). Добавь индикатор загрузки при подгрузке (ActivityIndicator в FooterComponent). Реализуй обработку ошибок при загрузке. Предоставь полный код.

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

const [data, setData] = useState([]);
const [refreshing, setRefreshing] = useState(false);
const [loadingMore, setLoadingMore] = useState(false);

const loadMore = async () => {
  if (loadingMore) return;
  setLoadingMore(true);
  const newData = await fetchNewData();
  setData(prev => [...prev, ...newData]);
  setLoadingMore(false);
};

Пояснение: FlatList — основной компонент для списков в React Native. Этот промт покрывает 90% типовых сценариев: лента новостей, каталог товаров, список чатов.

Промт 3: Текстовое поле с валидацией email

Назначение: Input с проверкой формата email в реальном времени.
Промт:

Создай компонент EmailInput в React Native (TypeScript). Он должен включать TextInput с маской, валидацию email (регулярное выражение), отображение ошибки под полем (красный текст), и кнопку очистки. Используй useState для значения и статуса валидации. Стили: borderColor меняется на красный при ошибке, на зелёный при успехе. Предоставь код и пример.

Пояснение: Валидация форм — частая задача. Готовый компонент можно использовать в регистрации, логине, подписке на рассылку.

Промт 4: Модальное окно с затемнением фона

Назначение: Popup-уведомление с анимацией появления.
Промт:

Напиши компонент Modal в React Native (JavaScript) с полупрозрачным фоном (backgroundColor: 'rgba(0,0,0,0.5)') и анимацией scale при открытии/закрытии. Используй React Native Modal и Animated. Компонент должен принимать пропсы: visible (boolean), onClose (function), children (ReactNode). Добавь обработку нажатия на фон для закрытия. Предоставь полный код.

Пример: Модалка для подтверждения действия или вывода справки.

Промт 5: Swipeable-карточка (как в Tinder)

Назначение: Карточка, которую можно смахнуть влево/вправо.
Промт:

Реализуй компонент SwipeableCard в React Native (TypeScript) с использованием PanResponder. Карточка должна двигаться за пальцем, и при смахивании > 100px по горизонтали — исчезать с анимацией. Добавь пропсы: onSwipeLeft, onSwipeRight, children. Стилизуй тень и скругления. Предоставь полный код.

Пояснение: Полезно для приложений знакомств, рекомендаций или чек-листов.

Раздел 2: Навигация (5 промтов)

Навигация — скелет приложения. React Navigation — стандарт де-факто. Вот промты для типовых сценариев.

Промт 6: Stack Navigator с заголовками и кнопкой назад

Назначение: Базовая навигация с экранами: Главный, Профиль, Настройки.
Промт:

Настрой Stack Navigator в React Native с использованием @react-navigation/native и @react-navigation/stack. Создай три экрана: HomeScreen, ProfileScreen, SettingsScreen. У каждого экрана должен быть заголовок (headerTitle). На ProfileScreen добавь кнопку "Назад" кастомную (иконка стрелки). Используй TypeScript для типизации пропсов навигации. Предоставь полный код App.tsx и экранов.

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

const Stack = createStackNavigator();

<Stack.Navigator initialRouteName="Home">
  <Stack.Screen name="Home" component={HomeScreen} options={{ title: 'Главная' }} />
  <Stack.Screen name="Profile" component={ProfileScreen} options={{ title: 'Профиль' }} />
</Stack.Navigator>

Пояснение: Этот промт — база для любого приложения. Экраны можно расширять.

Промт 7: Bottom Tab Navigator с иконками

Назначение: Нижнее меню с 3 вкладками (Главная, Поиск, Избранное).
Промт:

Реализуй Bottom Tab Navigator в React Native с помощью @react-navigation/bottom-tabs. Используй три вкладки: HomeTab, SearchTab, FavoritesTab. Для иконок используй react-native-vector-icons (Ionicons). Настрой активный цвет (#6200EE) и неактивный (серый). Сделай badge на вкладке Избранное (число 3). Предоставь полный код.

Пояснение: Нижнее меню — стандарт мобильных приложений. Промт даёт готовую структуру.

Промт 8: Передача параметров между экранами

Назначение: Передать ID товара из списка в детальный экран.
Промт:

Покажи пример передачи параметров через Stack Navigator в React Native (TypeScript). Создай два экрана: ProductListScreen (список товаров) и ProductDetailScreen (детали). При нажатии на товар в списке передавай { productId: number, productName: string } через navigation.navigate. На ProductDetailScreen получи параметры через route.params. Типизируй параметры с помощью types.ts. Предоставь полный код.

Пример:

// ProductListScreen
navigation.navigate('ProductDetail', { productId: 42, productName: 'Кроссовки' });
// ProductDetailScreen
const { productId } = route.params;

Пояснение: Передача данных — основа динамических экранов.

Промт 9: Drawer Navigator с кастомным меню

Назначение: Боковое меню с аватаркой и пунктами.
Промт:

Настрой Drawer Navigator в React Native с @react-navigation/drawer. Кастомный контент DrawerContent: вверху аватарка (Image), имя пользователя, email. Ниже пункты: Главная, Мои заказы, Выйти. Используй TypeScript. Добавь иконки для каждого пункта. Предоставь полный код.

Пояснение: Боковое меню удобно для приложений с множеством разделов.

Промт 10: Глубокие ссылки (Deep Linking)

Назначение: Открытие приложения по ссылке (например, myapp://product/123).
Промт:

Настрой Deep Linking в React Native с React Navigation. Создай конфигурацию linking: префикс 'myapp://', маппинг пути '/product/:id' на экран ProductDetailScreen. Реализуй обработку параметра id на экране. Используй TypeScript. Предоставь код App.tsx и экрана с получением id.

Пояснение: Глубокие ссылки важны для маркетинга и возврата пользователя.

Раздел 3: Работа с API (5 промтов)

Связь с сервером — сердце приложения. Промты для fetch, Axios и обработки ошибок.

Промт 11: Хук useFetch для GET-запроса

Назначение: Кастомный хук для загрузки данных с кэшированием.
Промт:

Напиши кастомный хук useFetch в React Native (TypeScript). Он должен принимать URL (string) и возвращать { data, loading, error }. Используй fetch и useEffect. Добавь отмену запроса при размонтировании компонента (AbortController). Реализуй простой кэш (Map) на 10 запросов. Предоставь полный код хука и пример использования.

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

const { data, loading, error } = useFetch('https://api.example.com/products');

Пояснение: Хук переиспользуется во всех экранах, где нужны данные с сервера.

Промт 12: POST-запрос с отправкой формы

Назначение: Отправка данных регистрации на сервер.
Промт:

Создай экран регистрации в React Native (TypeScript) с полями: email, пароль, подтверждение пароля. При нажатии кнопки "Зарегистрироваться" отправь POST-запрос на https://api.example.com/register с телом { email, password }. Используй fetch. Обработай ответ: при успехе покажи Alert с "Успех", при ошибке — выведи сообщение. Добавь валидацию полей. Предоставь полный код.

Пояснение: Типовой сценарий для любого приложения с авторизацией.

Промт 13: Обработка ошибок сети и таймаутов

Назначение: Устойчивый запрос с повторными попытками.
Промт:

Напиши функцию fetchWithRetry в React Native (JavaScript), которая делает fetch-запрос с таймаутом 5 секунд (AbortSignal.timeout). Если запрос не удался (сетевая ошибка или таймаут), повтори до 3 раз с задержкой 1 секунда между попытками. Функция должна возвращать Promise с данными или выбрасывать ошибку. Предоставь полный код и пример использования.

Пример:

try {
  const data = await fetchWithRetry('https://api.example.com/data');
} catch (error) {
  console.error('Ошибка после 3 попыток');
}

Пояснение: Мобильные сети нестабильны, повторные попытки повышают надёжность.

Промт 14: Интеграция Axios с перехватчиками

Назначение: Настройка Axios для всех запросов с токеном авторизации.
Промт:

Настрой Axios в React Native (TypeScript). Создай экземпляр axios с baseURL 'https://api.example.com'. Добавь перехватчик запроса, который добавляет заголовок Authorization: Bearer <token> из AsyncStorage. Добавь перехватчик ответа, который при статусе 401 очищает токен и перенаправляет на экран логина. Предоставь полный код конфигурации.

Пояснение: Axios популярнее fetch для сложных проектов из-за перехватчиков.

Промт 15: WebSocket для real-time чата

Назначение: Подключение к WebSocket для получения сообщений.
Промт:

Реализуй хук useWebSocket в React Native (TypeScript). Он должен подключаться к wss://chat.example.com, принимать сообщения, и возвращать { messages, sendMessage, connected }. Используй WebSocket API. Добавь автоматическое переподключение при обрыве (каждые 3 секунды). Обработай события onopen, onmessage, onclose, onerror. Предоставь полный код хука и пример компонента чата.

Пояснение: Real-time функции востребованы в мессенджерах и онлайн-играх.

Заключение

Эти 15 промтов покрывают 80% типовых задач в React Native — от UI-компонентов до навигации и работы с API. Каждый промт — это готовый шаблон, который можно адаптировать под свой проект за 5–10 минут. Чтобы ускорить разработку ещё сильнее, комбинируйте промты: например, используйте хук useFetch (промт 11) внутри FlatList (промт 2). Попробуйте скопировать один из промтов в ChatGPT или Claude прямо сейчас — вы увидите, как AI генерирует рабочий код за секунды. А если хотите систематизировать знания, изучите официальную документацию React Native (reactnative.dev) и React Navigation (reactnavigation.org).

← Все статьи

Комментарии

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