NavigationContainerの追加
開始する前に、アプリをNavigationContainerでラップする必要があります。NavigationContainerはナビゲーションツリーを管理し、ナビゲーション状態(英語のみ)を格納します。StackNavigatorを使用するかどうかにかかわらず、このコンポーネントはすべてのナビゲータータイプをラップする必要があります。App.tsxを開き、VegaがサポートするナビゲーションライブラリからNavigationContainerをインポートします。- LandingScreenコンポーネントを削除し、NavigationContainerコンポーネントに置き換えます。
StackNavigatorの作成
NavigationContainerを作成したので、StackNavigatorを追加しましょう。- KeplerScript React Navigation Stackライブラリから
createStackNavigatorをインポートします。 - アプリのreturnステートメントの前で
createStackNavigator()を呼び出し、レスポンスを「Stack」という変数に保存します。
createStackNavigator関数は、ScreenプロパティとNavigatorプロパティを含むオブジェクトを返します。どちらもナビゲーションの構成に使用されるReactコンポーネントです。
更新されたApp.tsxのコードは次のようになります。
StackNavigatorに画面を追加
NavigationContainerとStackを作成したので、このスタックにLandingScreenとVideoDetailScreenを追加しましょう。まず、VideoDetailPageをインポートする必要があります。- VideoDetailPageを画面のimportステートメントに追加します。
NavigationContainerにStack.Navigatorコンポーネントを追加します。Stack.Navigatorの下に、nameプロパティとcomponentプロパティを持つ2つのStack.Screenコンポーネントを追加します。nameプロパティとcomponentプロパティを、画面内の各コンポーネントの対応する名前に設定します。nameは文字列、componentはオブジェクトです。
nameは、そのcomponentの名前と異なっていても構いません。たとえば、{LandingScreen}コンポーネントに「Landing」という名前を使用できます。
更新されたApp.tsxのコードは次のようになります。
テーマの定義
NavigationContainerにテーマを指定して、背景色を保つためのスタイルを設定しましょう。- 対応するimportステートメントで、NavigationContainerの後にDefaultThemeを追加します。
- 以下のコードを使用して、App関数内に「AppTheme」という
constを作成します。
...DefaultThemeを呼び出し、DefaultThemeをAppThemeにコピーします。テーマ内のcolorsスタイルをオーバーライドします。ただし、ここではbackgroundとtextのカラーをオーバーライドするだけであるため、オーバーライドしないcolorsを選択するために...DefaultTheme.colorsを追加しました。
- 新しいテーマをNavigationContainerの
themeプロパティに渡します。
- アプリを更新して、外観を確認します。ヘッダーの上に大きな白いバーが表示されます。

白いバーのあるスタックナビゲーター
Stack.NavigatorにscreenOptionsプロパティを渡し、このプロパティを{{ headerShown: false }}に設定します。
App.tsxのコードは次のようになります。
ナビゲーションの基本
これでナビゲーションを使用して画面を移動できるようになりました。操作する前に、いくつかの基本事項を見ていきましょう。navigationオブジェクトは、propsオブジェクトを介してコンポーネントと画面に渡されます。それには、コンポーネント/画面のアロー関数のパラメーターで分割して使用するだけです(例:{ navigation })。
別の画面に移動するには、navigation.navigateを呼び出し、移動先の画面の名前を渡します(例:navigation.navigate('LandingScreen'))。
追加パラメーターを渡す必要がある場合は、フィールドと値を含むオブジェクトとして渡すことができます(例:navigation.navigate('LandingScreen', { param1: 1, param2: false, param3: []})。これらの追加のパラメーターはrouteパラメーターを介して使用できます。このパラメーターはpropsでも使用できます。パラメーターを受け取る画面またはコンポーネントでrouteオブジェクトを分割し(例:{ route })、paramsを介してパラメーターにアクセスできます(例:route.params.param1)。
このことを念頭に置いて、画面間のナビゲーションを設定しましょう。

