MST

星途 面试题库

面试题:Svelte中命名Slot在组件设计里如何传递数据

请阐述在Svelte组件中,如何通过命名Slot向其传递数据,并给出一个简单示例代码,说明父组件如何向子组件的命名Slot传递数据,以及子组件如何接收和使用这些数据。
49.9万 热度难度
前端开发Svelte

知识考点

AI 面试

面试题答案

一键面试

1. 命名Slot传递数据原理

在Svelte中,命名Slot允许父组件将内容插入到子组件的特定位置,并可以传递数据。父组件通过<svelte:component>标签将数据传递给命名Slot,子组件通过let:变量名语法在Slot内部接收数据。

2. 示例代码

父组件代码(App.svelte)

<script>
    let dataToPass = { message: 'Hello from parent!' };
</script>

<ChildComponent>
    <svelte:fragment slot="namedSlot" let:data={dataToPass}>
        <p>{data.message}</p>
    </svelte:fragment>
</ChildComponent>

子组件代码(ChildComponent.svelte)

<script>
</script>

<div>
    <slot name="namedSlot" data={null}>
        <p>No data passed to named slot</p>
    </slot>
</div>

在上述代码中:

  • 父组件:定义了一个对象dataToPass,并通过<svelte:fragment>标签将其传递给子组件名为namedSlot的Slot,在<svelte:fragment>内部使用let:data来指定传递数据的变量名。
  • 子组件:通过<slot>标签定义了名为namedSlot的Slot,并在<slot>标签内部,通过let:data接收父组件传递过来的数据,同时设置了默认内容以防没有数据传递。如果有数据传递,就会显示传递的数据,否则显示默认内容。