SvelteKit 5路由问题:如何避免/en/smth触发/lang首页逻辑
解决SvelteKit路由逻辑触发问题
你遇到的问题是SvelteKit默认路由行为导致的:父路由[lang]下的+page相关文件,会在所有子路由(比如[category])加载时被触发,因为它们共享同一个父布局,父路由的页面逻辑会被默认执行。
要解决这个问题,只需把仅属于/en(即[lang]根路径)的页面文件,移到专门的index子目录里,调整后的文件夹结构如下:
src/routes/[lang]/ ├── +layout.svelte ├── index/ │ ├── +page.svelte │ └── +page.server.ts └── [category]/ ├── +page.svelte └── +page.server.ts
调整后效果:
- 访问
/en时,会匹配[lang]/index/+page相关文件,执行对应的首页逻辑 - 访问
/en/smth时,只会触发[lang]/[category]/+page的逻辑,不会再触发原来[lang]根目录下的首页文件
原理是:原来[lang]根目录下的+page属于该路由的「默认页面」,所有子路由都会继承并触发它的逻辑;把它移到index子目录后,[lang]本身不再有自己的页面文件,只有当访问到/[lang]/(即index路径)时才会加载对应的页面逻辑,子路由访问时就不会再触发这部分内容了。
内容的提问来源于stack exchange,提问作者Durrasell
相关产品推荐
相关产品推荐

