props
传递数据、events
触发事件和slot
内容分发就构成了Vue组件的3个API来源,再复杂的组件也是由这3部分构成的。
Slot
父组件模板的内容是在父组件作用域内编译,子组件模板的内容是在子组件作用域内编译。
slot
分发的内容,作用域是在父组件上。
slot
的用法
在子组件内使用特殊的<slot>
元素就可以为这个子组件开启一个slot(插槽),在父组件模板里,插入在子组件标签内的所有内容将替代子组件的<slot>
标签及它的内容。父组件没有使用slot时,会渲染子组件<slot>
的备用内容,它的作用域是子组件本身。
具名slot
<slot>
元素指定一个name后可以分发多个内容,具名slot可以与单个slot共存,
<div id ="app">
<child -component >
<h2 slot="first">第一个名字为first内容分发</h2>
<p>无name属性内容分发</p>
<div slot="second">第一个名字为second内容分发</div>
</child -component >
</div>
Vue .component (’ child-component ’, {
template :'\
<div class ="container">\
<div class ="first">\
<slot name ="first"></ slot>\
</div>\
<div class ="none">\
<slot></slot>\
</div>\
<div class ="second">\
<slot name ="second"></ slot>\
</div>\
</div>'
) }
var app =new Vue({
el :'# app'
})
</script>
作用域卡槽
作用域卡槽是一种特殊的slot,使用一个可以复用的模板替换已渲染元素。