react-native-navigation について
React Navigation v6+ と Expo Router を使う React Native 開発者向けの学習スキルです。型安全な画面遷移、代表的なナビゲーター、ディープリンク、認証フローを扱います。
主な機能
- 01React Navigation の TypeScript 設定
- 02Stack、Tab、Drawer ナビゲーター
- 03ディープリンクとユニバーサルリンク
- 04型安全な画面パラメーター
- 05認証フローの処理
活用シーン
- 01React Native アプリのナビゲーション設定
- 02型チェック付きの画面パラメーター受け渡し
- 03特定画面を開くリンクの設定
- 04認証フローでのルート保護
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-react-native --skill react-native-navigationインストール後、Claude Code で/react-native-navigationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/config.yamlschema.jsonreferences/GUIDE.mdPATTERNS.mdscripts/validate.py詳細
React Native Navigation スキル
React Navigation v6+ と Expo Router を使用した、本番環境向けのナビゲーションパターンを学びます。
前提条件
- React Native の基礎知識(コンポーネント、スタイリング)
- TypeScript の基礎知識
- React context の理解
学習目標
このスキルを完了すると、次のことができるようになります。
- React Navigation を TypeScript でセットアップする
- Stack、Tab、Drawer ナビゲーターを実装する
- ディープリンクとユニバーサルリンクを設定する
- 認証フローを処理する
- 型安全な方法で画面間にパラメーターを渡す
対象トピック
1. インストール
npm install @react-navigation/native @react-navigation/native-stack
npm install react-native-screens react-native-safe-area-context
# For tabs
npm install @react-navigation/bottom-tabs
# For drawers
npm install @react-navigation/drawer react-native-gesture-handler react-native-reanimated
2. Stack ナビゲーター
import { createNativeStackNavigator } from '@react-navigation/native-stack';
type RootStackParamList = {
Home: undefined;
Details: { id: string };
};
const Stack = createNativeStackNavigator<RootStackParamList>();
function RootNavigator() {
return (
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
);
}
3. Tab ナビゲーター
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function MainTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Profile" component={ProfileScreen} />
</Tab.Navigator>
);
}
4. ディープリンク
const linking = {
prefixes: ['myapp://', 'https://myapp.com'],
config: {
screens: {
Home: 'home',
Details: 'details/:id',
},
},
};
<NavigationContainer linking={linking}>
{/* navigators */}
</NavigationContainer>
5. 型安全なナビゲーション
import { useNavigation } from '@react-navigation/native';
import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
type NavigationProp = NativeStackNavigationProp<RootStackParamList>;
function HomeScreen() {
const navigation = useNavigation<NavigationProp>();
return (
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details', { id: '123' })}
/>
);
}
クイックスタートの例
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
type RootStackParamList = {
Home: undefined;
Details: { id: string; title: string };
};
const Stack = createNativeStackNavigator<RootStackParamList>();
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
よくあるエラーと解決策
| エラー | 原因 | 解決策 |
|---|---|---|
| "Navigator not found" | NavigationContainer がない | アプリを NavigationContainer でラップする |
| パラメーターが undefined | 型の不一致 | ParamList の型を確認する |
| ディープリンクが動作しない | 設定の不一致 | linking のパスを確認する |
検証チェックリスト
- 両方のプラットフォームでナビゲーションが動作する
- ディープリンクで正しい画面が開く
- TypeScript がパラメーターのエラーを検出する
- 認証フローでルートが保護される
使用方法
Skill("react-native-navigation")
紐付けられたエージェント: 02-react-native-navigation
コメント
Markdown 対応