SvelteKit 通过`$app/state`模块提供三个只读状态对象 —— `page`、`navigating`和`updated`。 > \[注意\] 此模块添加于 2.12 版本。如果您使用的是 SvelteKit 的早期版本,请使用[`$app/stores`]($app-stores)代替。 ```js // @noErrors import { navigating, page, updated } from '$app/state'; ``` ## 导航 一个表示正在进行的导航的只读对象,具有 `from`、`to`、`type` 以及(如果 `type === 'popstate'`)`delta` 属性。当没有导航发生或服务器渲染期间,值 `null`。 ```dts const navigating: | import('@sveltejs/kit').Navigation | { from: null; to: null; type: null; willUnload: null; delta: null; complete: null; }; ``` ## 页 一个只读的响应式对象,包含有关当前页面的信息,服务于多个用例: * 检索组件树中所有页面/布局的合并`数据`(也见[加载数据](/docs/kit/load)) * 检索组件树中任何位置的 `表单` 属性的当前值(也参见 [表单操作](/docs/kit/form-actions)) * 获取通过 `goto`、`pushState` 或 `replaceState` 设置的页面状态(也参见 [goto](/docs/kit/$app-navigation#goto) 和 [浅层路由](/docs/kit/shallow-routing)) * 检索元数据,例如您所在的 URL、当前路由及其参数,以及是否发生错误 ```svelte

Currently at {page.url.pathname}

{#if page.error} Problem detected {:else} All systems operational {/if} ``` 变更 `页面` 仅可通过符文进行。 (旧的反应性语法将不会反映任何变更) ```svelte ``` 在服务器上,值只能在渲染时读取(换句话说,在例如 `加载` 函数中 *不能* 读取)。在浏览器中,值可以在任何时候读取。 ```dts const page: import('@sveltejs/kit').Page; ``` ## 更新 一个初始值为`false`的只读响应式值。如果`version.pollInterval`是一个非零值,SvelteKit 将轮询应用的新版本,并在检测到新版本时将`current`更新为`true`。`updated.check()`将强制立即检查,无论是否轮询。 ```dts const updated: { get current(): boolean; check(): Promise; }; ```