Vite + TanStack Router - 3. ルートの遷移
[vite]
[TanStack]
[TanStack Router]
ルート遷移には 4つの方法があります。ユーザーのクリックでページを移動する場合は1を使い、それ以外の場合に2〜4を使います。
とりあえず1と2だけ覚えておけば事足りると思います。
<Link />
コンポーネントを使うuseNavigate()
フックを使う<Navigate />
コンポーネントを使うRouter.navigate()
APIを使う
1. <Link />
コンポーネント
<Link />
コンポーネントは <a />
タグに変換されます。
to
属性
to
に遷移先のパスを書きます。<a />
タグのhref
にあたります。
params
属性
パスパラメータを渡す場合はparams
を使います。以下の例では http://localhost/posts/123
となります。
from
属性
from
には今いるページのパスを書きます。from
属性は必須ではありません、to
を相対パスにしたい場合に指定します。
また、from
を書いておくと search
の型推定が速くなります。
search
属性
サーチパラメータはsearch
属性に書きます。search
属性にはオブジェクトもしくは関数を書きます。
以下の例では http://localhost/search?query=tanstack
となります。
関数は前のパラメータを引数に受け取るので、一部だけ書きかえたいときに便利です。
hash
属性
ハッシュは hash
で追加し、to="/post/111#title"
のようには書きません。
activeProps
と inactiveProps
リンクがアクティブになったとき、非アクティブになったとき className
やstyle
などの属性を設定できます。オブジェクトまたは関数を指定できます。
className
とstyle
のみは <Link />
で指定したものとマージされますが、その他の属性は上書きされます。
子要素にアクティブ状態を渡す
<Link />
の子要素として関数を定義すると、引数で isActive
を受け取れます。
2. useNavigate
フック
フックを実行した戻り値のnavigate
関数を使ってページ遷移します。
3. <Navigate />
コンポーネント
コンポーネントがマウントされたタイミングでページ遷移が起こります。
4. router.navigate
API
useNavigate
フックの戻り値と同じ、ただしrouter
を参照できればどこでも使えます。
<MatchRoute />
と useMatchRoute()
to
属性で指定したルートにマッチしたときだけに表示されるコンポーネントです。
pending
属性をつけるとページ遷移時に時間がかかる場合にページを読込中であることを表示するのに使えます。
表示・非表示を自動で切り替えてくれるので便利です。
linkOptions
関数
linkOptions
関数を使うと <Link />
navigation
redirect
で共通で使えるオプションを作成できます。
まとめ
- ユーザー操作のページ遷移には
<a />
タグではなく<Link />
を使う - コールバック内からのページ遷移には
useNavigation
フックを使う