Vue插槽使用
有一个组件grid01,通常使用它 :
<grid01></grid01>
,假如我们想在标签里面渲染内容:<grid01><h1>你好</h1></grid01>
,这时就可以使用插槽。
基础用法
1 | Vue.component("grid01",{ |
1.<p>大海</p>会渲染到组件 grid01 中的slot插槽里面
2.插槽的位置改变,即渲染的内容位置改变
进阶用法
1.组件的插槽个数没有限制
2.可以通过name属性给 slot 设置名字
3.组件可以设置一个不带名字的 slot 作为默认插槽
4.可以在 slot 的标签中给 slot 设置默认内容,当没有内容插入时自动渲染
5.插槽模板内容中使用的数据或方法属于哪个组件?
这个插槽模板写在哪,就属于哪。
6.有时候插槽模板需要使用来自组件本身的数据
6.1 给插槽加一些属性,除name之外
<slot abc="哈哈" kl="最好"></slot>
6.2 在插槽模板内容的标签上,定义 slot-scope="obj"
6.3 obj是一个对象{ abc:"哈哈", kl: "最好"},此时可使用obj.abc来使用参数
1 | Vue.component("grid01",{ |
Vue2.6中指定插槽使用v-slot这样写: 注意:1
2
3
4
5
6
7
8
9
10
11
12
13let vm = new Vue({
el: "#app",
data: {},
template:`
<div id="app">
<grid01>
<template v-slot:top="obj">
<p>大海,{{ obj.money }}</p>
</template>
</grid01>
</div>
`
})
v-slot 必须在一个 template 标签中使用
v-slot:top表示指定插槽为top