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).
Комментарии