一、插槽的作用
插槽主要是为了实现Vue得内容分发的API,他允许开发者在子组件标签中添加内容,并将这些内容渲染出来,这些内容可以是一段字符串,或者一个HTML标签,也可以是父组件中的变量,或是一个子组件。
二、编译作用域
该插槽跟模板的其他地方一样可以访问相同得实例property,而不能访问包着他得子组件的作用域。
作为一条规则,我们需要记住:父级模板里的所有内容都是在父级作用域中编译,子模板里的所有内容都是在子作用域中编译的。
父级的数据可以向子组件中传递,并且数据只能通过父组件修改,子组件不允许直接修改父组件传进来的数据,这样会引起vue报错。
三、后备内容
有时候我们需要标签有一个默认的内容,我们可以在子组件中提前写上一个
如果我们在子组件中未写内容,那么就会显示
四、具名插槽
有时候我们会需要多个插槽,插入不同的内容,这是我们可以使用
对于一个未起名的
五、如果想要在插槽内容中使用子组件的数据
正常情况下,我们的插槽只能访问父组件的数据,无法直接访问子组件中的数据,我们可以在子组件的slot标签中加上一个自定义属性。
在父组件中的结构,current-user组件结构就是上图的样式,绑定在 当我们在这个子组件中使用这种语法后,默认插槽就必须使用这种语法: v-slot:default=”数据名”,不能使用简写:v-slot=”数据名”。 插槽使用子组件数据实例: 1、我们需要在showname组件中的 2、在v-bind属性定义我们要引用的子组件数据,v-bind后面跟的是我们通过什么名字(name)引用子组件的数据,这个名字后面引号中的名字 ( dataname ) 就是我们引用的子组件property, 3、在框架中使用:需要在标签中的v-slot属性的冒号后面跟slot插槽的名字,插槽名字后面等号跟的是插槽prop的名字,我们引用的数据都在这个插槽prop下面,通过对象引用的方式引用他下面对应的数据:插槽prop.name
4、如果插槽没有名字,也需要使用v-slot:default=”XXX”的方式引用数据,不能使用缩写 六、v-slot的缩写 v-slot的缩写为 # 井号键