
よっしー
こんにちは。よっしーです(^^)
今日は、SvelteKitのリファレンスについて解説しています。
背景
SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
@sveltejs/kit
Navigation
Navigation
インターフェース:
from: NavigationTarget | null;
ナビゲーションがどこから開始されたかto: NavigationTarget | null;
ナビゲーションがどこに向かっている/向かったかtype: Exclude<NavigationType, 'enter'>;
ナビゲーションの種類:
form
: ユーザーが<form>
を送信leave
: タブが閉じられるか、異なるドキュメントへのナビゲーションが発生して、アプリを離れるlink
: リンクのクリックによるナビゲーションgoto
:goto(...)
呼び出しまたはリダイレクトによるナビゲーションpopstate
: 戻る/進むナビゲーションによって開始
willUnload: boolean;
ナビゲーションによってページがアンロードされるかどうか(クライアントサイドのナビゲーションでない場合)delta?: number;
履歴の戻る/進むナビゲーションの場合、前後に移動するステップ数complete: Promise<void>;
ナビゲーションが完了すると解決し、失敗または中断された場合は拒否されるPromise。willUnload
ナビゲーションの場合、Promiseは決して解決されない
解説
Navigationインターフェースは、SvelteKitにおけるナビゲーション状態と動作を管理する重要なインターフェースです。
- ナビゲーションの追跡
from
とto
プロパティにより、ナビゲーションの出発点と目的地を追跡- ナビゲーションの方向性と文脈を把握可能
- ナビゲーションタイプの分類
- 5つの異なるナビゲーションタイプを定義
- ユーザーアクション(フォーム送信、リンククリック)
- プログラム的なアクション(goto、リダイレクト)
- ブラウザアクション(戻る/進む)
- アプリケーション離脱
- ページライフサイクル管理
willUnload
によるページアンロードの予測- クライアントサイドナビゲーションとの区別
- リソース管理の最適化が可能
- 履歴ナビゲーション
delta
による履歴移動の制御- 戻る/進む操作の詳細な制御が可能
- 非同期処理の制御
complete
Promiseによるナビゲーション完了の追跡- エラーハンドリングとナビゲーション状態の監視
- アンロードケースの特別な扱い
このインターフェースは、SPAにおける複雑なナビゲーション管理を効果的に実現するための基盤を提供します。
NavigationEvent
NavigationEvent
インターフェース定義:
interface NavigationEvent
Params extends Partial<Record<string, string>>,
RouteId extends string | null
> {…}
プロパティ:
params: Params;
現在のページのパラメータ – 例えば/blog/[slug]
のようなルートに対して、{ slug: string }
オブジェクトroute: {…}
現在のルートに関する情報id: RouteId;
現在のルートのID – 例えばsrc/routes/blog/[slug]
に対して、/blog/[slug]
となるurl: URL;
現在のページのURL
解説
NavigationEvent
は、SvelteKitのルーティングシステムにおけるナビゲーション情報を扱うための基本インターフェースです。
- 型パラメータの役割:
Params
: URLパラメータの型を定義RouteId
: ルートの識別子の型を定義- どちらも柔軟な型制約を可能にする
- ルートパラメータの処理:
// 例:/blog/hello-world に対して
{
params: { slug: 'hello-world' },
route: { id: '/blog/[slug]' }
}
- 主な用途:
- 動的ルーティングの実装
- ページ遷移の追跡
- URLパラメータの型安全な取り扱い
- ルート情報へのアクセス
- 実践的な使用例:
export const load = (event: NavigationEvent) => {
const { slug } = event.params;
const currentUrl = event.url;
// slugやURLを使用したデータ取得など
};
このインターフェースは、型安全性を保ちながら、ルーティングとナビゲーションに関する重要な情報へのアクセスを提供します。
おわりに
今日は、 SvelteKitのリファレンスについて解説しました。

よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント