vue中slot插槽

插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口。

也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容

slot中可以设置一些默认的内容,如果传递了内容则会替换掉,如果没有名字的标签会默认放到default中。

例如:没有插槽时候,组件内发布的一些内容是不起作用的,加了插槽就起作用了

   <div id="app">
       <modal><h2>是否删除</h2></modal>
       <modal><span>确认内容</span></modal>  
    </div>
    <template id="modal">
      <div>
        <slot></slot>
      </div>
    </template>
 let modal = {
    template:'#modal'
   }
   let vm = new Vue({
    el:'#app',
    components:{
      modal
    }
   });

 vue中slot插槽

自定义slot:

1、子组件必须为双标签

2、子组件内写上自定义的结构或样式,且加上slot的属性(该属性要对应默认slot的名字)

3、在子组件中包一个slot的元素,可以任意修改。在slot元素上定义一个name属性,为了更好的对应操作

<slot name="title">默认标题</slot>
<slot name="content">默认内容</slot>
<slot name="default">这是一个默认标题</slot>

对应的插槽和内容相对应

<div id="app">
       <modal><span slot="title">是否删除</span><p slot="content">确认删除吗?</p></modal> 
</div>