首页 > 解决方案 > 如何在 SvelteKit 中以编程方式路由?

问题描述

我希望能够管理我的 SvelteKit 应用程序的历史记录,同时确保 SvelteKit 的整个路由系统不会受到任何影响。

就像是:

function routeToPage(route: string) {
   router.push(`/${route}`) // equivalent of this function
}

标签: sveltesvelte-3sveltekit

解决方案


感谢 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)
}

推荐阅读