如何让SvelteKit子路由仅用自身布局,不继承根布局?
解决SvelteKit路由不继承根布局的优雅方案
- 直接在
/routes/child/目录下创建+layout@.svelte文件,这个文件会作为child路由分支的顶层独立布局,完全不继承根布局。 - 注意:这个布局文件必须包含
{@slot},否则子页面/子布局的内容无法渲染。
示例代码(/routes/child/+layout@.svelte):
<!-- Child路由的专属顶层布局,无父布局继承 --> <div class="child-root-layout"> <h2>Child页面专属顶部区域</h2> {@slot} <!-- 用于渲染child/+layout.svelte或child/+page.svelte的内容 --> </div>
- 原有的
/routes/child/+layout.svelte可以正常保留,它会作为+layout@.svelte的子布局使用,渲染顺序为:+layout@.svelte→+layout.svelte→+page.svelte。
为什么之前的尝试没效果?
大概率是你创建的+layout@.svelte里没有添加{@slot},导致子内容没有渲染入口,看起来像是布局没生效。
内容的提问来源于stack exchange,提问作者Maksim Shamihulau
相关产品推荐
相关产品推荐

