Svelte 中如何像 Vue 那样使用具名插槽传递内容?
我之前用 Vue 写组件时经常用具名插槽,比如 header 和 footer 分开传内容,现在转 Svelte 有点懵。试了下直接写 slot=”header” 好像不行,控制台也没报错,但内容没渲染出来。是不是语法不一样?
我在子组件里写了 <slot name="header"></slot>,父组件这样传:
<MyComponent>
<div slot="header">这是头部</div>
<p>默认内容</p>
</MyComponent>
结果只有默认内容显示了,header 那块是空的。Svelte 的具名插槽到底该怎么写?是不是要加什么特殊语法?
slot="header"在 Svelte 里不生效。正确的做法是在父组件里用来指定具名插槽。你在子组件
MyComponent.svelte里写的是对的,但父组件需要这样写:这样 Svelte 就知道要把
标签里的内容放到名为header的具名插槽里去了。性能上这不会有什么额外开销,但语法要对了才能正常工作。希望这能帮到你。svelte:fragment:子组件用
默认 ,父组件还是这样传 。如果不是 Svelte 5 的话,你那个写法应该能工作...我之前这样搞没问题,确认下组件引用和拼写没问题?