面试题答案
一键面试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
接收父组件传递过来的数据,同时设置了默认内容以防没有数据传递。如果有数据传递,就会显示传递的数据,否则显示默认内容。