Usage

  1. import { Navigator } from '@wordpress/components';
  2. const MyNavigation = () => (
  3. <Navigator initialPath="/">
  4. <Navigator.Screen path="/">
  5. <p>This is the home screen.</p>
  6. <Navigator.Button path="/child">
  7. Navigate to child screen.
  8. </Navigator.Button>
  9. </Navigator.Screen>
  10. <Navigator.Screen path="/child">
  11. <p>This is the child screen.</p>
  12. <Navigator.BackButton>Go back</Navigator.BackButton>
  13. </Navigator.Screen>
  14. </Navigator>
  15. );

Hierarchical paths

Navigator は、画面がその path に従って階層的に整理されていることを前提としています。これは、各パスセグメントが / 文字で始まり、区切られる URL のようなスキームに従う必要があります。

Navigator は「戻る」ナビゲーションを親画面に戻るものとして扱います。したがって、コンポーネントの消費者が正しい画面階層を作成する責任があります。

例えば:

  • / はすべてのパスのルートです。常に path="/" を持つ画面が必要です;
  • /parent/child/parent の子です;
  • /parent/child/grand-child/parent/child の子です;
  • /parent/:param/parent の子でもあります;
  • 現在の画面に path="/parent/child/grand-child" がある場合、「戻る」時に Navigator は一致する画面(またはルート /)が見つかるまでパス階層を再帰的にナビゲートしようとします。

Height and animations

Navigator.Screen アニメーションの動作により、Navigator コンポーネントには height を割り当てることが推奨されます。これにより、画面間を移動する際の潜在的な UI ジャンプを防ぐことができます。

Individual components

Navigator は、4 つの個別のコンポーネントで構成されています:

  • Navigator: ラッパーコンポーネントおよびコンテキストプロバイダー。画面の表示と非表示の主要なロジックを保持します。
  • Navigator.Screen: 単一のビュー/画面/パネルを表します;
  • Navigator.Button: 別の Navigator.Screen にナビゲートするボタンをレンダリングします;
  • Navigator.BackButton: 親 Navigator.Screen にナビゲートするボタンをレンダリングします(階層パスに関する上記のセクションを参照)。

高度な使用法では、消費者は useNavigator フックを使用できます。

Navigator

Props
initialPath: string

初期アクティブパス。

  • 必須: はい
children: string

子要素。

  • 必須: はい

Navigator.Screen

Props
path: string

画面のパスで、ナビゲーターに保存されている現在のパスと一致します。

Navigator は、画面がその path に従って階層的に整理されていることを前提としています。これは、各パスセグメントが / 文字で始まり、区切られる URL のようなスキームに従う必要があります。

Navigator は「戻る」ナビゲーションを親画面に戻るものとして扱います。したがって、コンポーネントの消費者が正しい画面階層を作成する責任があります。

例えば:

  • / はすべてのパスのルートです。常に path="/" を持つ画面が必要です。
  • /parent/child/parent の子です。
  • /parent/child/grand-child/parent/child の子です。
  • /parent/:param/parent の子でもあります。
  • 現在の画面に path があり、その値が /parent/child/grand-child の場合、「戻る」時に Navigator は一致する画面(またはルート /)が見つかるまでパス階層を再帰的にナビゲートしようとします。
  • 必須: はい
children: string

子要素。

  • 必須: はい

Navigator.Button

Props
path: string

ナビゲートする画面のパス。このプロパティの値は HTML 属性の有効な値 である必要があります。

  • 必須: はい
attributeName: string

Navigator.Button を識別するために使用される HTML 属性で、Navigator によってフォーカスを復元するために使用されます。

  • 必須: いいえ
  • デフォルト: id
children: string

子要素。

  • 必須: いいえ
Inherited props

Navigator.Button は、Button のすべての Button プロパティ を継承しますが、hreftarget は除きます。

Navigator.BackButton

Props
children: string

子要素。

  • 必須: いいえ
Inherited props

Navigator.BackButton は、Button のすべての Button プロパティ を継承しますが、hreftarget は除きます。

useNavigator

navigator インスタンスを useNavigator フックを使用して取得できます。

Props

navigator インスタンスにはいくつかのプロパティがあります:

goTo: ( path: string, options: NavigateOptions ) => void

goTo 関数は、指定されたパスにナビゲートすることを可能にします。2 番目の引数は、異なるオプションでナビゲーション操作を拡張できます。

利用可能なオプションは:

  • focusTargetSelector: string。ナビゲーションバック時に一致する要素にフォーカスを復元するために使用される CSS セレクタを指定するためのオプションのプロパティ;
  • isBack: boolean。ナビゲーションが後方と見なされるべきかどうかを指定するためのオプションのプロパティ(可能な場合はフォーカスの復元を有効にし、アニメーションも後方にする);
  • skipFocus: boolean。コンポーネントの消費者が自分でフォーカスを管理したい場合に便利な Navigator のフォーカス管理をオプトアウトするためのオプションのプロパティ;
goBack: ( path: string, options: NavigateOptions ) => void

goBack 関数は、親画面にナビゲートすることを可能にします。親/子ナビゲーションは、定義したパスが階層的である場合にのみ機能します(上記の注意を参照)。

一致が見つからない場合、関数は一致する画面(またはルート /)が見つかるまでパス階層を再帰的にナビゲートしようとします。

利用可能なオプションは、goTo メソッドと同じですが、isBack プロパティは goBack メソッドでは利用できません。

location: NavigatorLocation

location オブジェクトは現在の位置を表し、いくつかのプロパティを持っています:

  • path: string。位置に関連付けられたパス。
  • isBack: boolean。現在の位置が後方にナビゲートすることによって到達された場合、true になります。
  • isInitial: boolean。初期位置に対してのみ true になります。
params: Record< string, string | string[] >

現在の位置からのパラメータの解析されたレコード。例えば、現在の画面パスが /product/:productId で、位置が /product/123 の場合、params{ productId: '123' } になります。