SvelteKit页面load函数未触发,无法获取URL的slug参数
解决SvelteKit页面load函数未触发的问题
问题根源
你把load函数写在了+page.svelte的context="module"脚本里,这不符合SvelteKit的规则——页面的load函数必须单独放在**同目录下的+page.js(客户端/通用加载逻辑)或+page.server.js(仅服务端执行的加载逻辑)**文件中,+page.svelte里的module脚本不会触发load流程。
正确实现方式
- 在
src/routes/categories/[slug]/目录下新建+page.js文件 - 在该文件中导出load函数,通过参数获取URL中的slug:
/** @type {import('./$types').PageLoad} */ export function load({ params }) { console.log('当前Slug:', params.slug); return { slug: params.slug }; }
- 在
+page.svelte中接收load返回的数据:
<script> export let data; </script> <p>通过load获取的Slug:{data.slug}</p> <p>wassap</p>
补充说明
- 如果你的加载逻辑需要访问服务端专属资源(比如数据库、内部API),改用
+page.server.js,这样代码不会暴露给客户端 - SvelteKit会自动执行
+page.js/+page.server.js里的load函数,无论是首次加载还是通过页面导航进入,执行结果都会以data属性传递给对应的+page.svelte组件
内容的提问来源于stack exchange,提问作者MrCujo
相关产品推荐
相关产品推荐

