电脑的 usb 口,大家都非常熟悉,保留的 usb 口可以插入鼠标、键盘、U盘、音响、耳机等等,一个插口可以添加多个设备。我们的插槽也是这样,预留一个位置,我们使用的时候可以放入自己需要的内容。
插槽基本使用就是:抽取共性,保留不同。使用者提供插槽内容。
方式1:基本使用
<div id="app">
<!-- 调用组件 -->
<cld>插槽内容</cld>
</div>
<!-- 组件内容 -->
<template id="child">
<div>
子组件内容
<slot></slot>
</div>
</template>
方式2:添加默认值
给插槽内添加默认值,使用组件时,插槽没有填入内容就会展示默认内容,如果使用组件时传入插槽内容,就会展示对应的内容。
<div id="app">
<!-- 调用组件 -->
<cld></cld>
</div>
<!-- 组件内容 -->
<template id="child">
<div>
子组件内容
<slot>默认内容</slot>
</div>
</template>
此时页面展示 默认内容。
<div id="app">
<!-- 调用组件 -->
<cld>传入插槽内容</cld>
</div>
<!-- 组件内容 -->
<template id="child">
<div>
子组件内容
<slot>默认内容</slot>
</div>
</template>
此时页面展示 传入插槽内容。
方式3:具名插槽
具名插槽就是有具体名字的插槽,基本用法为:
<!-- 组件调用 -->
<div id="app">
<cld>
没有插槽内容
<h2 slot="title">标题</h2>
</cld>
</div>
<!-- 子组件内容 -->
<template id="child">
<div>
<slot name="title"></slot>
子组件内容
<slot>默认内容</slot>
</div>
</template>
我们经常通过父组件给子组件传递展示内容,但是作用域插槽刚好相反,是父组件替换插槽的标签,但是内容由子组件来提供。
slot-scope 获取插槽作用域,其实就是把组件内的数据带出来。
<!-- 子组件使用 -->
<cld >
<template slot="title" slot-scope="scope">
<div >
获取数据
<li v-for="item in scope.data">{{item}}</li>
</div>
</template>
</cld>
<!-- 子组件内容 -->
<template id="child" >
<div>
<slot name="title" :data="color"></slot>
</div>
</template>
<script>
export default{
data(){
return{
color:['red','oranage','yellow','green']
}
}
}
</script>
作用:主要用于提供的组件带有一个可从子组件获取数据的可复用的插槽,为了让这个特性成为可能,把需要的数据全部包裹在一个slot元素上,然后通过 slot-scope 特性,把数据从子组件获取出来。
注意:在 vue 的 2.5.0 版本以下,slot-scope 必须绑定在 template 元素上,而更高版本 vue,没有此限制,可以用于任何元素或组件上。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。