svelte - 如何在 SvelteKit 中以编程方式路由?
问题描述
我希望能够管理我的 SvelteKit 应用程序的历史记录,同时确保 SvelteKit 的整个路由系统不会受到任何影响。
就像是:
function routeToPage(route: string) {
router.push(`/${route}`) // equivalent of this function
}
解决方案
感谢 SvelteKit Discord 的 Theo 回答我自己的问题:
使用https://kit.svelte.dev/docs#modules-$app-navigation。
import { goto } from '$app/navigation';
function routeToPage(route: string, replaceState: boolean) {
goto(`/${route}`, { replaceState })
}
replaceState == true
将替换路由而不是添加到浏览器历史记录中。因此,当您单击返回时,您将不会回到原来的路线。
要回去使用History API。
import { goto } from '$app/navigation';
function goBack(defaultRoute = '/home') {
const ref = document.referrer;
goto(ref.length > 0 ? ref : defaultRoute)
}
推荐阅读
- mysql - 将日期转换为字符串,然后在 mysql 中再次转换为日期。在 mysql 中组合 2 个函数
- python - 有效的成对和
- python - 将大字符串转换为数据框
- python - Unable to apply Django migration in Postgres DB
- flutter - 输入“行为主题”
' 不是类型 'Stream 的子类型 '的'流' - rust - 如何在 Substrate 中从 Polkadot.js 实现 blake2AsHex 功能?
- snakemake - Snakemake 可变文件数
- c# - 获取用户的组策略设置
- glibc - 是否可以从 C 代码运行 __libc_start_main ?
- java - 如何从 LinkedHashMap 中检索最后 N 个元素