一、作用
父组件可以向子组件指定位置插入html结构,也是一种通信方式,适用于 父组件=>子组件
二、分类
默认插槽、具名插槽(有具体名字的插槽)、作用域插槽
三、使用方式
1、默认插槽
父组件
<Category title="美食" > <ul> <li v-for="data,index in foods" :key="index"> {{data}}</li> </ul> </Category>
子组件 Category.vue文件中
<template> <div class="category"> <h3>{{title}}分类</h3> <!-- 定义默认插槽,用来接收父组件传递的html结构 --> <slot>插槽默认内容</slot> </div> </template>
2、具名插槽
场景:父组件向子组件插入多个html结构,需要具名插槽
子组件:命名插槽,关键字name
父组件:使用插槽,slot=子组件的插槽名,最好用<template></template>包裹,不影响结构
-----------
父组件
<!-- 父组件 --> <template slot="center"> <ul> <li v-for="data,index in foods" :key="index"> {{data}}</li> </ul> </template> <template slot="footer"> <a href="https://www.baidu.com">百度一下</a> </template>
子组件
<template> <div class="category"> <h3>{{title}}分类</h3> <!-- 定义默认插槽,用来接收父组件传递的html结构 --> <slot name="center">插槽默认内容ul li</slot> <slot name="footer">插槽内容 a 标签</slot> </div> </template>
3、作用域插槽
场景:父组件向子组件传递html结构,html结构需要使用数据,但是数据在子组件里,需要使用作用域插槽实现
子组件在slot中 动态绑定值 :test="test"
父组件想要插入的html 外包的 <template scop="xx"></template>,xx是定义的值,获取值需要通过xx.test 或 scop="{test}"
父组件
<Category title="美食" > <!-- 父组件 --> <!-- 接收值第一种方法 --> <template scope="abc"> <ul> <li v-for="data,index in abc.foods" :key="index"> {{data}}</li> </ul> </template> </Category> <Category title="美食" > <!-- 父组件 --> <!-- 接收值第二种方法--> <template scope="{foods}"> <ul> <li v-for="data,index in foods" :key="index"> {{data}}</li> </ul> </template> </Category>
子组件
<template> <div class="category"> <h3>{{title}}分类</h3> <!-- 定义默认插槽,用来接收父组件传递的html结构 --> <slot :foods="foods">插槽默认内容ul li</slot> </div> </template>
标签:Vue,插槽,默认,test,html,组件,data From: https://www.cnblogs.com/wt7018/p/18656439