这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战。
今天学习插槽的使用,上篇文章写道:插槽相当于一个容器,用来承载外部输入的数据在页面中渲染出来。那么具体插槽分为几种呢?
第一种是默认插槽,<slot></slot>,紧接着上文说到的在子组件中,定义 <slot>我是默认插槽</slot>,父组件<p>我是要传递的父级信息</p>。(如果不用插槽的话,在浏览器中,父组件带有标签的信息不会在浏览器中被显示出来)这时候父组件的信息就会替代子组件slot里面的信息显示出来了;ps:父组件定义到子组件的插槽的内容,并不是只有带有标签,也可以是一个组件或者数据结构,都可以把内容插入到插槽里面去。
第二种是具名插槽。<slot name="名称"></slot>,顾名思义,就是给插槽起个名字,为了区分不同的插槽。附上图片可以参考:
第三种是作用域插槽。写法 <slot :定义的属性名=定义的属性></slot>。顾名思义就是带着数据的插槽,作用是用来控制数据在模板中的显示与否。相当于子组件绑定数据然后传递给父组件。相当于字传父。使用场景:在element的组件库使用表格组件时,编辑和删除要用到作用域插槽。例子:子组件
const sonCom = { template:
子组件数据:{{user.firstName}}
, data() { return { user: { firstName: '三', lastName: '张' } } } },
父组件:`<div id="app">
<son-com v-slot:son="scope">{{scope.user.lastName}}</son-com></div>`,这样父组件就能调用到子组件了。作用域插槽其实和数据息息相关,因为vue是单向数据流,我们通过组作用域插槽,,可以在父组件中修改数据,方便安全