美文网首页
Vue插槽slot

Vue插槽slot

作者: Kevin_hoo | 来源:发表于2019-07-19 17:52 被阅读0次

    Vue 实现了一套内容分发的 API,将 <slot>元素作为承载分发内容的出口。大致如下
    parent为父组件,child为子组件

    • 普通插槽

    <template>
        <div class="parent">
            <com-child>
                <!-- 父组件在子组件里面插入标签,然后子组件引用slot就可以看到插槽内容 -->
                <span>{{msg}}</span> 可以不用标签
            </com-child>
        </div>
    </template>
    
    msg:'父组件普通插槽'
    
    <template>
        <div class="child">
            <!-- 默认/default插槽 -->
            <slot>父组件没有插入内容时,此内容会显示,否则会被插入的内容覆盖</slot>
        </div>
    </template>
    

    显示效果:
    父组件普通插槽 可以不用标签

    • 具名插槽

    注意:v-slot是新指令,代替slot和slot-scope,版本需要在 2.6.0 以上

    <template>
        <div class="parent">
            <com-child>
                <template slot=first>
                    <div>这是第一个具名插槽</div>
                </template>
                <div slot='second'>这是第二个具名插槽</div>
                <template v-slot:third>
                    <p>这是第三个具名插槽</p>
                </template>
            </com-child>
        </div>
    </template>
    
    <template>
        <div class="child">
            <slot name='first'>first</slot>
            <slot name='second'>second</slot>
            <slot name='third'>third</slot>
        </div>
    </template>
    

    显示效果:
    这是第三个具名插槽
    这是第一个具名插槽
    这是第二个具名插槽
    third

    当前vue版本为: "^2.5.2",导致子组件中的third也显示出来了

    • 作用域插槽

    父组件可以控制插槽的内容,能够访问子组件中才有的数据
    注意:scope在2.5.0中被slot-scope替代,用法:除了scope只可以用于<template>元素,其他和slot-scope都相同

    <template>
        <div class="parent">
            <template slot=itemSlot slot-scope="slotProps">
                <li>{{slotProps.itemid + ' & ' + slotProps.text}}</li>
            </template>
        </div>
    </template>
    
    <template>
        <div class="child">
            <slot name="itemSlot" v-for="item in items" 
              :text="item.text" 
              :itemid="item.id">
              默认值
            </slot>
        </div>
    </template>
    
    items:[
      {id:1,text:'第1段'},
      {id:2,text:'第2段'},
      {id:3,text:'第3段'},
    ]
    

    显示效果:
    1 & 第1段
    2 & 第2段
    3 & 第3段

    相关文章

      网友评论

          本文标题:Vue插槽slot

          本文链接:https://www.haomeiwen.com/subject/qncslctx.html