1 # 插槽
2 1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的放肆,适用于 父组件===>子组件
3 2.分类:默认插槽、具名插槽、作用域插槽
4 3.使用方式:
5 a.默认插槽
6 父组件中:
7 <Category><div>html结构1</div></Category>
8 子组件中:
9 <template><div><slot>插槽内容(该处内容将会由父组件中的html结构覆盖)...</slot></div><template>
10 b.具名插槽:
11 父组件中:
12 <Category>
13 <template slot="center"><div>html结构1(该处结构替换子组件中插槽名为“center”的插槽)</div><template>
14 <template v-slot=footer><div>html结构2(该处结构替换子组件中插槽名为“footer”的插槽)</div><template>
15 </Category>
16 子组件中:
17 <template><div>
18 <slot name="center">插槽内容(该处内容将会由父组件中的html结构覆盖)...</slot>
19 <slot name="footer">插槽内容(该处内容将会由父组件中的html结构覆盖)...</slot>
20 </div><template>
21 c.作用域插槽:
22 理解:数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。
23 父组件中:
24 <Category title="美食">
25 <template scope="categoryObj">
26 <ul>
27 <li v-for="(data, index) in categoryObj.foods" :key="index">{{data}}</li>
28 </ul>
29 <img slot="foot" src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt="">
30 </template>
31
32 </Category>
33 <Category title="美食">
34 <template scope="{foods,msg}">
35 <ul>
36 <li style="color:red" v-for="(data, index) in foods" :key="index">{{data}}</li>
37 </ul>
38 <img slot="foot" src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt="">
39 <h1>{{msg}}</h1>
40 </template>
41 </Category>
42 子组件中:
43 <template>
44 <div class="category">
45 <h3>{{title}}</h3>
46 <slot :foods="foods" msg="test">这是default插槽</slot>
47 </div>
48
49 </template>
50 <script>
51 export default {
52 name: 'Category',
53 props:['title'],
54 data(){
55 return {
56 foods:['火锅','烧烤','小龙虾','牛排'],
57 }
58 }
59 }
60 </script>