SvelteKit 导航转到状态

Ale*_*sky 10 svelte sveltekit

在 SvelteKit 导航goto中允许传递state第二个参数,例如:

import { goto } from '$app/navigation';

// ...

goto('/login', { state: { foo: 'bar' } });
Run Code Online (Sandbox Code Playgroud)

这些文档没有明确说明state在发生导航后如何使用/检索。state似乎不存在于$page上,也不似乎在 上可用$navigating

你如何消费state传递给第二个参数的goto()?目前是否丢失并且您必须创建自己的可写存储来管理此状态?

这是一个适配器静态SvelteKit 应用程序。

Jax*_*axx 5

所指的状态是浏览器选项卡或窗口的历史堆栈中保存的状态。

您可以通过两种不同的方式访问它:

  • 直接通过读取 的值,尽管在实践中不是很有用,因为它仅返回历史堆栈顶部的history.state状态值
  • 通过侦听popstate事件,该事件将在历史堆栈“弹出”时触发(例如:点击浏览器上的后退按钮或以编程方式导航),在这种情况下,这state将是合成event对象上的一个属性,当事件引发