插槽(slot)是vue组件的封装者提供的能力。允许开发者在组装组件时,把不确定、希望由用户指定的部分定义为插槽。
slot的name属性
vue官方规定每一个slot插槽,都要有一个name名称,
如果省略了slot的那么属性,则会有一个默认名称叫做default。
默认情况下,在使用组件的时候,提供的内容会被填充到名字为default的插槽中。
1.如果要把内容填充到指定名称的插槽中,,要使用v-slot指令
2.v-slot指令后面要跟上插槽的名字
3.v-slot指令不能直接使用在元素身上,必须用在template标签上
4.template这个标签,他是一个虚拟标签,只起到包裹性质的作用,不会被渲染会实质性的html元素
5.v-slot: 可以简写为#
v-slot的默认内容
直接在<slot></slot>中输入文本即可
<slot>这是插槽默认的内容</slot>
具名插槽的定义与使用
带名字的插槽就叫具名插槽
我们还可以在<slot>的标签中添加自定义属性列入:
<slot name="content" msg="hello vue"></slot>
如果想要在父组件的能够直接访问到子组件中的msg,应该怎么做呢?
我们可以在父组件调用content这个插槽的组件中接收一个对象
obj就是一个形参,可以是任意名称,通过{{obj.msg}}拿到msg中的数据。
作用域插槽的解构赋值
如何结构: