TODO link to stores exercise
以前学んだように、Svelte の store は個々のコンポーネントに属さないデータを置くことができます。
SvelteKit では、3つの読み取り専用 store を $app/stores
モジュールから使用できます — page
、navigating
、updated
です。もっとも多く使用することになるのは page
で、これは現在のページに関する情報を取得することができます:
url
— 現在のページの URLparams
— 現在のページのパラメータroute
— 現在のルート(route)を表すid
プロパティを持つオブジェクトstatus
— 現在のページの HTTP ステータスコードerror
— 現在のページのエラーオブジェクト (エラーが存在する場合。以降の演習でエラーハンドリングを学習する予定です)data
— 現在のページの data。全てのload
関数からの戻り値が足されたものform
— form action から返されるデータ
他の store と同様、コンポーネントでは $
シンボルを先頭に付けることでその値を参照することができます。例えば、現在のパス名は $page.url.pathname
でアクセスできます:
src/routes/+layout
<script>
import { page } from '$app/stores';
let { children } = $props();
</script>
<nav>
<a href="/" aria-current={$page.url.pathname === '/'}>
home
</a>
<a href="/about" aria-current={$page.url.pathname === '/about'}>
about
</a>
</nav>
{@render children()}
previous next
1
2
3
<h1>home</h1>
<p>this is the home page.</p>