面试题答案
一键面试默认Slot实现
- 外层组件(Outer.svelte):
<script> let outerContent = 'This is outer content'; </script> <Middle> {outerContent} </Middle>
- 中层组件(Middle.svelte):
<script> let middleContent = 'This is middle content'; </script> <Inner> {middleContent} <slot /> </Inner>
- 内层组件(Inner.svelte):
<div> <p>Inner component</p> <slot /> </div>
在这个结构中,外层组件的内容通过默认Slot传递给中层组件,中层组件又将自身内容和外层传递来的内容一起通过默认Slot传递给内层组件。
具名Slot实现
- 外层组件(Outer.svelte):
<script> let outerNamedContent = 'This is outer named content'; </script> <Middle> <svelte:fragment slot="outer-slot"> {outerNamedContent} </svelte:fragment> </Middle>
- 中层组件(Middle.svelte):
<script> let middleNamedContent = 'This is middle named content'; </script> <Inner> <svelte:fragment slot="middle-slot"> {middleNamedContent} </svelte:fragment> <slot name="outer-slot" /> </Inner>
- 内层组件(Inner.svelte):
<div> <p>Inner component</p> <slot name="middle-slot" /> <slot name="outer-slot" /> </div>
通过具名Slot,外层组件可以将特定内容传递到中层和内层组件指定的具名Slot位置,实现更精确的内容传递和渲染。