如何在 SvelteKit 上进行稳健的导航,以在用户欺骗浏览器 URL 栏时出现 404 时保持应用程序状态值?
我的游戏应用程序中有一个复杂的导航。
(编辑 3:删除/简化了一些段落)
现实世界的例子将近 30 页!
我将游戏竞技场板组合直接放在布局中,以便可以轻松显示主菜单等模态页面;堆在它们上面。
我编写了一个组件“GotoView”及其关联的商店,具有即时(按钮)和预定(计时器)导航功能。
我只是担心两个不好的用例:
...两者都可能搞乱应用程序状态并导致崩溃。
是否可以简单地阻止后退导航,并从 404 页面中恢复?
问候。
编辑:
是的!
后退导航:使用
goto(url, { replaceState: true })
并可能从 $app/navigation
无效
错误404:如果真正的404出现在
src/routes/game/arena/game-arena-splash/+page.svelte
中,我知道捕获404的唯一方法是/src/routes/game/arena/+error.svelte
,上一级
编辑(2)
顺便说一下,我试图嵌套更深的错误链接以模拟作弊 URL:
src/routes/
+error.svelte
+layout.svelte
game/
+error.svelte
arena/
+error.svelte
/game-arena-splash
+error.svelte
+page.svelte
在最嵌套的页面中使用此链接:
< a href = "/game/arena/this-is-404" > BOOM !!! </ a >
...但没办法!无法捕获 404,直到它冒泡到根级别 (/src/routes) 加上布局重新加载,将恢复 404 的机会减少到零......并丢失存储的数据状态!!!
我之前也试过Navigate inside layouts ...
我应该考虑改用服务器、cookie 还是快照?
感谢回复!享受编码。