为什么用插槽?
使得我们的组件具有扩展性,由使用者决定组件内部展示的内容。将不同的地方定义为插槽暴露出去,根据使用的场景需求决定内容。
具名插槽?
有时候我们在一个组件需要用到多个插槽,用命名name="footer"的方式给每个插槽取名,可以区分它们。
作用域插槽?
在子组件中动态绑定需要传入的数据,在父组件传入数据给子组件。
示例
父组件
<template>
<div>
<SlotDemo :title="title">
具名:在指定的位置输出我们的子元素,如下面的尾部元素插槽。
<br />作用域:主要作用是在书写插槽内容时可以获取到插槽作用域(父组件传不同的值给子组件)的值,例如对话框的标题。
<br />
<template #footer>
<el-button size="mini" type="primary" style="margin-right:5px">编辑</el-button>
<el-button size="mini" type="error">删除</el-button>
</template>
</SlotDemo>
</div>
</template>
<script>
import SlotDemo from '../../components/slot-demo.vue'
export default {
name: 'Home',
components: {
SlotDemo
},
data() {
return {
title: '熟悉具名插槽和作用域插槽'
}
}
}
</script>
<style></style>
子组件
<template>
<div class="wrapper">
<div class="dialog">
<div class="header center">
<slot name="header">
<span>
<strong>{{ title }}</strong>
</span>
<i class="el-icon-close" @click="close"></i>
</slot>
</div>
<div class="body">
<slot>请输入正文</slot>
</div>
<div class="footer">
<slot name="footer" v-if="$slots.footer">我是尾部元素</slot>
</div>
<div class="clear"></div>
</div>
</div>
</template>
<script>
export default {
name: 'slot-demo',
props: {
title: {
type: String,
default: ''
},
}
}
</script>
<style scoped lang="scss">
.wrapper {
color: #333;
width: 1280px;
margin: 0 auto;
background-color: aquamarine;
.dialog {
padding: 10px;
.header {
position: relative;
i {
cursor: pointer;
position: absolute;
top: 5px;
right: 10px;
}
}
.body {
height: 100px;
}
.footer {
float: right;
height: 30px;
}
.clear {
clear: both;
}
}
}
.center {
display: flex;
align-items: center;
justify-content: center;
}
</style>
图示
标签:name,title,作用域,插槽,具名,组件 来源: https://blog.csdn.net/m0_48156716/article/details/121490075
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。