Vue.js 的 slot 插槽是让封装的组件更具扩展性和复用性的一种方式。它允许父组件在子组件的模板中插值内容。
使用 slot 的好处:
- 让组件更具有扩展性。用户可以根据自己的需求来定义组件内容。
- 有利于组件复用。用户可以在不同的场景下,拼接出不同的组件外观。
slot 的基本用法:
在子组件中定义 slot:
html
<div>
<slot>
<!-- 如果没有分发内容则显示此处内容 -->
</slot>
</div>
在父组件中通过 元素将内容分发到子组件:
html
<Child>
<span>分发的内容</span>
</Child>
在子组件的 slot 元素中定义的默认内容会在分发的内容为空的时候显示。
具名 slot 的用法:
在子组件中定义具名 slot:
html
<div>
<slot name="one">
<!-- 默认内容 -->
</slot>
<slot name="two">
<!-- 默认内容 -->
</slot>
</div>
在向该组件中分发内容的时候,使用 slot 属性指向具名的 slot:
html
<Child>
<span slot="one">分发的内容</span>
</Child>
scope slot 用法:
如果要让 slot 的内容能够访问子组件的数据,可以在子组件的 slot 元素上使用 scope 属性:
html
<div>
<slot name="one"
v-bind:user="user">
<!-- 默认内容 -->
</slot>
</div>
在父组件分发内容的时候,通过使用 scope 来定义一个临时的变量来接收:
html
<Child>
<template scope="props">
<span>{{ props.user.name }}</span>
</template>
</Child>
以上就是 Vue.js slot 插槽的主要用法,它为我们的组件带来更高的复用性和扩展性。