默认插槽:
DefaultSlot.vue
<template>
<div>
<h1>默认插槽</h1>
<slot>我是默认插槽,这是一些默认内容</slot>
</div>
</template>
<script>
export default {
name: "DefaultSlot"
}
</script>
具名插槽:
NameSlot.vue
<template>
<div>
<h1>具名插槽</h1>
<slot name="name_slot1">我是具名插槽1,这是一些默认内容</slot>
<slot name="name_slot2">我是具名插槽1,这是一些默认内容</slot>
</div>
</template>
<script>
export default {
name: "NameSlot"
}
</script>
<style scoped>
a{
margin-right: 5px;
}
</style>
作用域插槽:
ScopeSlot.vue
<template>
<div>
<h1>作用域插槽</h1>
<slot :games="games">我是作用域插槽,这是一些默认内容</slot>
</div>
</template>
<script>
export default {
name: "ScopeSlot",
data: function(){
return {
games: ["穿越火线", "仙剑三", "三国", "拳皇"]
}
}
}
</script>
插槽使用:
App.vue
<template>
<div>
<!--默认插槽-->
<DefaultSlot>
<a href="http://www.baidu.com">百度</a>
</DefaultSlot>
<!--具名插槽-->
<NameSlot>
<a slot="name_slot1" href="http://www.baidu.com">百度1</a>
<a slot="name_slot2" href="http://www.baidu.com">百度2</a>
</NameSlot>
<!--作用域插槽-->
<ScopeSlot>
<template scope="slotData">
<ul>
<li v-for="(data,index) in slotData.games" :key="index">{{data}}</li>
</ul>
</template>
</ScopeSlot>
</div>
</template>
<script>
import DefaultSlot from "./components/DefaultSlot"
import NameSlot from "./components/NameSlot"
import ScopeSlot from "./components/ScopeSlot"
export default {
name: "App",
components: {
DefaultSlot,
NameSlot,
ScopeSlot
}
}
</script>
代码运行效果如下图: