组件--插槽:匿名插槽具名插槽

mac2022-06-30  19

单个插槽|匿名插槽

1.1  <navigation-link> 子组件定义为:

<a v-bind:href="url" class="nav-link"> <slot></slot> </a>1.2 父组件向一下这样使用<navigation-link>子组件 <navigation-link url="/profile"> Your Profile </navigation-link>

1.3渲染出来的 HTML 将会是:

<a v-bind:href="url" class="nav-link"> Your Profile </a>

2.具名插槽

需要多个插槽时,可以利用<slot> 元素的一个特殊的特性:name来定义具名插槽

 

2.1<base-layout>子组件模板定义:

<div class="container"> <header> <slot name="header"></slot> </header> <main> <slot></slot> </main> <footer> <slot name="footer"></slot> </footer> </div>

 

2.2.1父组件使用子组件<base-layout>,节点上使用slot特性:

<base-layout> <h1 slot="header">Here might be a page title</h1> <p>A paragraph for the main content.</p> <p>And another one.</p> <p slot="footer">Here's some contact info</p> </base-layout>

 

2.2.2也可在内容外层套一个节点,并在外层节点上使用slot特性:

<base-layout> <template slot="header"> <h1>Here might be a page title</h1> </template> <p>A paragraph for the main content.</p> <p>And another one.</p> <template slot="footer"> <p>Here's some contact info</p> </template> </base-layout>

 

2.3渲染出来的 HTML 都将会是:

<div class="container"> <header> <h1>Here might be a page title</h1> </header> <main> <p>A paragraph for the main content.</p> <p>And another one.</p> </main> <footer> <p>Here's some contact info</p> </footer> </div>

 

3.作用域插槽——带数据的插槽

单个插槽和具名插槽中插槽上不绑定数据,所以父组件提供的模板既要包括样式又要包括数据,而作用域插槽是子组件提供数据,父组件只需要提供一套样式

3.1子组件:

<template> <div class="child"> <h3>这里是子组件</h3> // 作用域插槽 <slot :data="data"></slot> </div> </template> export default { data: function(){ return { data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba'] } } }

 

3.2父组件:

<template> <div class="father"> <h3>这里是父组件</h3> <!--第一次使用:用flex展示数据--> <child> <template slot-scope="user"> <div class="tmpl"> <span v-for="item in user.data">{{item}}</span> </div> </template> </child> <!--第二次使用:用列表展示数据--> <child> <template slot-scope="user"> <ul> <li v-for="item in user.data">{{item}}</li> </ul> </template> </child> <!--第三次使用:直接显示数据--> <child> <template slot-scope="user"> {{user.data}} </template> </child> <!--第四次使用:不使用其提供的数据, 作用域插槽退变成匿名插槽--> <child> 我就是模板 </child> </div> </template>

 

转载于:https://www.cnblogs.com/yangjingyang/p/11390925.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)