我有一个问题:我需要将其他部分添加到URL(即:我有/route,我需要将它转换为/route/something,而不需要重新加载页面。我尝试使用后藤(),但它会重新加载页面。如果有人能帮助我,我将不胜感激。我将期待更改URL参数,例如:/watchlist/[lang]而不重新加载,如果可能,使用后藤()
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设置为什么,都应该有一个路由,否则页面重新加载将导致错误,因为页面将不再被找到。
history.pushState
1条答案
按热度按时间9jyewag01#
SvelteKit使用一个基于文件系统和路径的路由器,所以如果你改变了路径,你就调用了一个页面改变。你可能应该 * 不 * 在路径中做一些类似语言的东西。
例如,您可以将其作为查询参数传递,或者将其与会话/用户信息一起存储在cookie、存储器或服务器端。
要更改查询,可以执行以下操作:
如果你真的想阻止导航并将其保留在路径中,你可以尝试使用
history.pushState
/history.pushState
,但这可能会扰乱导航,因为这会绕过SvelteKit路由器。无论你将URL设置为什么,都应该有一个路由,否则页面重新加载将导致错误,因为页面将不再被找到。