插槽slot
一、简介:
插槽是 Vue 组件化开发中非常强大且灵活的工具,它使得组件的复用性和可定制性大大提高。通过合理地使用不同类型的插槽,可以构建出更加灵活和可维护的 Vue 应用程序。
二、使用场景
-
可重用组件的定制化
比如一个通用的弹窗组件,弹窗的标题、内容、按钮等部分可以通过插槽让父组件根据不同的业务场景进行定制。 -
布局组件
像一个布局框架组件,包含头部、侧边栏、主体等区域,通过具名插槽让父组件在不同区域插入不同的组件或内容。
三、插槽的分类和使用
默认插槽 、具名插槽、 作用域插槽
1、默认插槽
如果父组件没有为该插槽提供特定内容,就会显示插槽的默认内容。
如在子组件中:
<template><div><slot>这是默认内容</slot></div>
</template>
2、具名插槽
如在子组件中 通过给插槽添加name属性:
<template><div><slot name="header"></slot><slot></slot><slot name="footer"></slot></div>
</template>
如父组件使用子组件时,通过v-slot指令,指定插入:
<template><my-component><template v-slot:header>头部内容</template><template v-slot:default>主体内容</template><template v-slot:footer>底部内容</template></my-component>
</template>
3、作用域插槽
作用域插槽允许子组件传递数据给父组件,并且在父组件中根据这些数据渲染不同的内容
如在子组件中,在<slot>
元素上绑定属性来传递数据:
<template><div><slot :data="message"></slot></div>
</template><script>
export default {data() {return {message: '这是来自子组件的数据'};}
};
</script>
- 父组件在使用作用域插槽时,可以通过解构赋值获取子组件传递的数据:
<template><my-component><template v-slot:default="{ data }"><p>{{ data }}</p></template></my-component> </template>