插槽
默认插槽
BiliBili.vue
<div class="aside-wrap">
<h2>排行榜</h2>
<!-- 插槽 -->
<slot></slot>
</div>
App.vue
<BiliBili>
<ul>
<li v-for="(aw,index) in awList" :key="index">
<span>{{index + 1}}</span>
{{aw.title}}
</li>
</ul>
</BiliBili>
------------------------------
data(){
return{
awList:[
{title:'大家好我是李毅大帝,今天我入驻',url:'http://www.baidu.com'},
{title:'震惊,半夜为何无故被敲门',url:'http://www.baidu.com'},
{title:'震惊国人的10件事,尤其是第七个。',url:'http://www.baidu.com'},
{title:'多活10年,不看后悔。',url:'http://www.baidu.com'},
{title:'美国沉默,完全颠覆你的想象。',url:'http://www.baidu.com'},
{title:'果断出手,这简直太神了。',url:'http://www.baidu.com'},
{title:'灭绝人性,真是太天才了',url:'http://www.baidu.com'},
{title:'国人不忍了,难以置信的骗术',url:'http://www.baidu.com'},
{title:'美国慌了,不分享还是人吗?',url:'http://www.baidu.com'}
],
具名插槽(添加name属性,防止重名问题)
BiliBili.vue
<div class="aside-wrap">
<h2>
<slot name="awname"></slot>排行榜
</h2>
<!-- 具名插槽 -->
<slot name="aw"></slot>
</div>
App.vue
<BiliBili>
<!-- template专门用来渲染使用的,不会在页面显示 -->
<template slot="awname">动漫</template>
<ul slot="aw">
<li v-for="(aw,index) in awList" :key="index">
<span>{{index + 1}}</span>
{{aw.title}}
</li>
</ul>
</BiliBili>
-----------------------------------------------------------
data(){
return{
awList:[
{title:'大家好我是李毅大帝,今天我入驻',url:'http://www.baidu.com'},
{title:'震惊,半夜为何无故被敲门',url:'http://www.baidu.com'},
{title:'震惊国人的10件事,尤其是第七个。',url:'http://www.baidu.com'},
{title:'多活10年,不看后悔。',url:'http://www.baidu.com'},
{title:'美国沉默,完全颠覆你的想象。',url:'http://www.baidu.com'},
{title:'果断出手,这简直太神了。',url:'http://www.baidu.com'},
{title:'灭绝人性,真是太天才了',url:'http://www.baidu.com'},
{title:'国人不忍了,难以置信的骗术',url:'http://www.baidu.com'},
{title:'美国慌了,不分享还是人吗?',url:'http://www.baidu.com'}
],
作用域插槽(添加 slot-scope属性)
BiliBili.vue
<div class="aside-wrap">
<h2>
<slot name="awname"></slot>排行榜
</h2>
<!-- 作用域插槽 -->
<slot name="aw" :awList="awList"></slot>
</div>
--------------------------------------------------
data(){
return {
awList:[
{title:'大家好我是李毅大帝,今天我入驻',url:'http://www.baidu.com'},
{title:'震惊,半夜为何无故被敲门',url:'http://www.baidu.com'},
{title:'震惊国人的10件事,尤其是第七个。',url:'http://www.baidu.com'},
{title:'多活10年,不看后悔。',url:'http://www.baidu.com'},
{title:'美国沉默,完全颠覆你的想象。',url:'http://www.baidu.com'},
{title:'果断出手,这简直太神了。',url:'http://www.baidu.com'},
{title:'灭绝人性,真是太天才了',url:'http://www.baidu.com'},
{title:'国人不忍了,难以置信的骗术',url:'http://www.baidu.com'},
{title:'美国慌了,不分享还是人吗?',url:'http://www.baidu.com'}
],
App.vue
<BiliBili>
<!-- template专门用来渲染使用的,不会在页面显示 -->
<template slot="awname">动漫</template>
<ul slot="aw" slot-scope="{awList}">
<li v-for="(aw,index) in awList" :key="index">
<span>{{index + 1}}</span>
{{aw.title}}
</li>
</ul>
</BiliBili>