在SvelteKit中,为什么不能把props从 +layout.svelte传递给+page.svelte文件?
据我所知,来自+layout.svelte的 $props不会被它的+page.svelte文件(或任何其他子级的+page.svelte文件)继承,而且在不设定某种外部作用域的前提下,也无法通过 {@render children()} 手动从+layout.svelte传递props。
这对我来说有点奇怪:+layout.svelte的 UI可以在各页面之间共享,但数据却不能同样共享,而且也没有像在普通组件中那样方便地传递数据的方式。我当然相信有其合理的原因,这也是我提出这个问题的原因,但我对SvelteKit为什么要以这种方式架构还是有些困惑。
解决方案
这个限制之所以存在,可能是因为框架有需要设定的自有属性。这样就不会让属性的来源产生混淆,也有助于在将来需要添加新属性时避免属性名冲突。
需要注意,来自布局加载函数的 [data from layout load functions] 会跨层级合并,因此如果你需要把来自 +layout 的数据传递给 +page,可以把它作为一种机制。对于 load 函数中尚未提供的内容,我建议使用 Svelte context。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。