MST

星途 面试题库

面试题:Svelte高级Slot技术:在复杂组件嵌套中如何合理运用默认Slot与具名Slot

假设有一个多层嵌套的Svelte组件结构,外层组件包裹中层组件,中层组件再包裹内层组件。外层组件需要通过Slot向中层和内层组件传递内容。请描述如何利用默认Slot与具名Slot实现这一需求,确保内容能正确传递和渲染,并写出关键代码示例。
30.1万 热度难度
前端开发Svelte

知识考点

AI 面试

面试题答案

一键面试

默认Slot实现

  1. 外层组件(Outer.svelte)
    <script>
        let outerContent = 'This is outer content';
    </script>
    <Middle>
        {outerContent}
    </Middle>
    
  2. 中层组件(Middle.svelte)
    <script>
        let middleContent = 'This is middle content';
    </script>
    <Inner>
        {middleContent}
        <slot />
    </Inner>
    
  3. 内层组件(Inner.svelte)
    <div>
        <p>Inner component</p>
        <slot />
    </div>
    

在这个结构中,外层组件的内容通过默认Slot传递给中层组件,中层组件又将自身内容和外层传递来的内容一起通过默认Slot传递给内层组件。

具名Slot实现

  1. 外层组件(Outer.svelte)
    <script>
        let outerNamedContent = 'This is outer named content';
    </script>
    <Middle>
        <svelte:fragment slot="outer-slot">
            {outerNamedContent}
        </svelte:fragment>
    </Middle>
    
  2. 中层组件(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>
    
  3. 内层组件(Inner.svelte)
    <div>
        <p>Inner component</p>
        <slot name="middle-slot" />
        <slot name="outer-slot" />
    </div>
    

通过具名Slot,外层组件可以将特定内容传递到中层和内层组件指定的具名Slot位置,实现更精确的内容传递和渲染。