Навыки rn-navigation
📦

rn-navigation

Низкий риск

Построение навигации Expo Router

Приложения React Native требуют правильной архитектуры навигации для таб-баров, модальных окон и глубоких ссылок. Этот навык предоставляет проверенные паттерны Expo Router для производственных приложений.

Поддерживает: Claude Codex Code(CC)
📊 69 Адекватно
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «rn-navigation». Create an app with bottom tabs for Feed, Search, and Profile. Add a FAB button in the center that opens a Compose modal.

Ожидаемый результат:

Use the Expo Router directory structure:

app/
├── _layout.tsx # Root layout with providers
├── (app)/
│ └── _layout.tsx # Tab layout with tabBar
├── (app)/_layout.tsx:

export default function AppLayout() {
return (
<Tabs
screenOptions={{
tabBarActiveTintColor: '#007AFF',
headerShown: false,
}}>
<Tabs.Screen name="feed" />
<Tabs.Screen name="search" />
<Tabs.Screen
name="compose"
href={{ pathname: '/compose', params: { modal: true } }}
listeners={{ tabPress: (e) => e.preventDefault() }}
/>
<Tabs.Screen name="profile" />
</Tabs>
)
}

Использование «rn-navigation». Set up deep links so that myapp://messages/123 opens the chat screen for conversation 123

Ожидаемый результат:

In app.json:

{
"expo": {
"scheme": "myapp",
"plugins": [
[
"expo-router",
{ "origin": "myapp://" }
]
]
}
}

In app/_layout.tsx or index.tsx:

const linking = {
prefixes: ['myapp://', 'https://myapp.com'],
config: {
screens: {
'(app)': {
screens: {
messages: {
path: 'messages/:conversationId',
parse: {
conversationId: (conversationId) => conversationId
}
}
}
}
}
}
}

export default function RootLayout() {
return (
<GestureHandlerRootView>
<SafeAreaProvider>
<NavigationContainer linking={linking}>
<Stack />
</NavigationContainer>
</SafeAreaProvider>
</GestureHandlerRootView>
)
}

Аудит безопасности

Низкий риск
v5 • 1/21/2026

Documentation-only skill for React Native navigation patterns. Static findings are false positives: backtick patterns are markdown code formatting, cryptographic alerts are scanner noise on text patterns, and URLs are legitimate metadata. No executable code or security concerns detected.

2
Просканировано файлов
1,097
Проанализировано строк
0
находки
5
Всего аудитов
Проблем безопасности не найдено

Оценка качества

38
Архитектура
100
Сопровождаемость
87
Контент
30
Сообщество
90
Безопасность
91
Соответствие спецификации

Что вы можете построить

Мобильный разработчик создаёт новое приложение

Настройка структуры навигации для нового приложения Expo с вкладками, стеками и глубокими ссылками по производственным паттернам.

Команда добавляет сложную навигацию

Рефакторинг существующей навигации для поддержки модальных окон, вложенных маршрутов и правильной конфигурации глубоких ссылок.

Разработчик отлаживает проблемы навигации

Диагностика проблем состояния навигации, сбоев обработки глубоких ссылок или проблем рендеринга таб-бара.

Попробуйте эти промпты

Базовая настройка навигации
Создайте структуру навигации Expo Router для приложения React Native с таб-баром, содержащим экраны Home, Profile и Settings. Включите вложенный стек для Settings с параметрами уведомлений и конфиденциальности.
Конфигурация глубоких ссылок
Настройте глубокие ссылки для приложения Expo, чтобы custom URL scheme://profile/settings открывал стек Settings на экране Privacy. Покажите необходимую конфигурацию в app.json и реализацию хука linking.
Паттерн модальной навигации
Реализуйте паттерн модального представления с Expo Router, где модальное окно выдвигается снизу с размытием фона. Включите правильное закрытие с поддержкой жестов.
Сохранение состояния навигации
Реализуйте сохранение состояния навигации с использованием AsyncStorage, чтобы пользователи возвращались к точному положению экрана после перезапуска приложения. Обработайте логику восстановления для вложенного состояния навигации.

Лучшие практики

  • Используйте соглашение о папках (group) для организации навигационных стеков и управления общими макетами
  • Настройте префиксы глубоких ссылок на раннем этапе, чтобы избежать проблем с разрешением путей в production
  • Тестируйте нави��ацию как на iOS, так и на Android, поскольку поведение жестов различается между платформами

Избегать

  • Избегайте смешивания React Navigation и Expo Router в одном приложении
  • Не хардкодьте URL глубоких ссылок в компонентах; используйте динамическую генерацию путей
  • Избегайте глубоких мутаций состояния навигации без правильных границ ошибок

Часто задаваемые вопросы

Как обрабатывать аутентификационные guards с Expo Router?
Используйте условный рендеринг в корневом макете на основе состояния аутентификации. Перенаправляйте неаутентифицированных пользователей на специальный поток аутентификации с помощью router.replace() при необходимости.
Можно ли использовать Expo Router с компонентами React Native Fabric?
Да, Expo Router 3.0+ поддерживает Fabric. Оберните приложение в GestureHandlerRootView для правильной обработки жестов как с классическими компонентами, так и с компонентами Fabric.
Как передавать параметры между экранами в Expo Router?
Используйте объект params в prop href: href={{ pathname: '/profile', params: { userId: '123' }}}. Получите доступ к params через хук useLocalSearchParams().
В чём разница между компонентами Stack и Tabs?
Stack управляет иерархической навигацией для потоков с детализацией. Tabs предоставляет нижнюю панель для переключения между представлениями верхнего уровня. Комбинируйте их, вкладывая Stack внутрь Tabs или наоборот.
Как обрабатывать кнопку "Назад" на Android в Expo Router?
Expo Router автоматически обрабатывает кнопку "Назад" на Android в большинстве случаев. Используйте useBackButtonHook() для пользовательского поведения или router.canGoBack() для проверки состояния навигации.
Можно ли анимировать переходы между экранами в Expo Router?
Да, используйте prop animation на Stack.Screen. Доступные опции: 'default', 'fade', 'slide_from_right', 'slide_from_left', 'fade_from_bottom' и 'none'.

Сведения для разработчиков

Автор

CJHarmath

Лицензия

MIT

Ссылка

main

Структура файлов

📄 SKILL.md