SvelteKit中如何让a href跳转至路由的不同分支?
SvelteKit 跨路由分支跳转问题解决方案
直接解决方法:使用绝对路径
你遇到的问题是因为用了相对路径,浏览器会自动拼接当前页面的路由前缀。只要把a标签的href改成以斜杠/开头的绝对路径就行,比如:
<a href="/article/category/xxx/sub6">查看文章</a>
这样就会从网站根路由开始解析目标地址,不会带上/dashboard/page/[pagenum]的前缀。
SvelteKit 常规处理方式
如果需要在跳转前做额外逻辑(比如验证用户权限、保存表单数据),可以用SvelteKit官方提供的goto函数:
- 先导入导航函数:
import { goto } from '$app/navigation';
- 在点击事件中调用:
<button on:click={() => goto('/article/category/xxx/sub6')}>查看文章</button>
这种方式属于客户端导航,比原生a标签跳转更贴合SvelteKit的路由体系,还能配合路由守卫实现更复杂的跳转控制。
另外,直接使用SvelteKit的<a>标签(和原生a标签用法一致),只要保证href是绝对路径,就会自动触发客户端导航,无需额外配置。
内容的提问来源于stack exchange,提问作者cdwhiteiv
相关产品推荐
相关产品推荐

