目录
一、Vue的插槽
1、插槽(slot)
插槽(slot):将父组件中的内容与子组件中的模板进行混合使用。可以弥补视图的不足
2、使用插槽的目的
使用插槽的目的:使组件更具有扩展性
3、插槽的使用
(1)匿名插槽(默认插槽):<slot></slot>
,有且只能有一个。
☀举例:
Son.vue代码段:
<template>
<div>
<h2>子组件</h2>
<p>西安邮电大学</p>
<slot></slot>
</div>
</template>
<script>
export default {
name: "Son"
}
</script>
<style scoped>
</style>
Father.vue代码段:
<template>
<div>
<Son>
<button>演示按钮</button>
</Son>
</div>
</template>
<script>
import Son from "./Son.vue";
export default {
name: "Father"
}
</script>
<style scoped>
</style>
App.vue代码段:
import Father from "./components/Father.vue";
<template>
<img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
<Father/>
</template>
(2)具名插槽:当子组件的功能复杂时,子组件的插槽可能并非是一个。每个插槽给个名称。 比如封装一个导航栏的子组件,可能就需要三个插槽,分别代表左边、中间、右边。那么,外面在给插槽插入内容时,如何区分插入的是哪一个呢?
这时候,就需要给slot指定一个name属性,也就是具名插槽。
a、子组件中定义插槽:
<slot name="名称"></slot>
b、父组件中使用插槽:<template v-slot:"插槽名"></template>
☀举例:
Father.vue代码段:
<template>
<div>
<Son>
<template v-slot:top>
<button>顶部按钮</button><br/>
</template>
<template v-slot:center>
<input type="text"/>
</template>
<template v-slot:bottom>
<h2>具名插槽</h2>
</template>
<template v-slot:default> //dafault代表匿名的插槽
<button>匿名插槽</button>
</template>
</Son>
</div>
</template>
<script>
import Son from './Son.vue'
export default {
name: "Father",
components: {
Son
}
}
</script>
<style scoped>
</style>
Son.vue代码段:
<template>
<div>
<slot name="top"></slot>
<slot