typescript 有没有什么方法可以使用后藤()而不需要在SvelteKit上重新加载页面?

gajydyqb  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(130)

我有一个问题:我需要将其他部分添加到URL(即:我有/route,我需要将它转换为/route/something,而不需要重新加载页面。我尝试使用后藤(),但它会重新加载页面。如果有人能帮助我,我将不胜感激。
我将期待更改URL参数,例如:/watchlist/[lang]而不重新加载,如果可能,使用后藤()

9jyewag0

9jyewag01#

SvelteKit使用一个基于文件系统和路径的路由器,所以如果你改变了路径,你就调用了一个页面改变。你可能应该 * 不 * 在路径中做一些类似语言的东西。
例如,您可以将其作为查询参数传递,或者将其与会话/用户信息一起存储在cookie、存储器或服务器端。
要更改查询,可以执行以下操作:

function onChange() {
    const url = new URL(window.location.href);
    url.searchParams.set('lang', 'en');

    goto(url.href);
    // or this, if you do not want a new history entry:
    goto(url.href, { replaceState: true });
}

如果你真的想阻止导航并将其保留在路径中,你可以尝试使用history.pushState/history.pushState,但这可能会扰乱导航,因为这会绕过SvelteKit路由器。无论你将URL设置为什么,都应该有一个路由,否则页面重新加载将导致错误,因为页面将不再被找到。

相关问题