插槽(slot)、普通插槽、具名插槽(多个插槽)、作用域插槽(slot绑定数据)

1.使用普通插槽

 index.vue(引入test.vue,注册)

 <template>
  <p>使用插槽</p>
//使用插槽
    <test>
        <p>插入的内容</p>
    </test>
</template>

test.vue

<template>
  <p>普通插槽</p>
//slot占位
    <slot></slot>
</template>

2.具名插槽(多个插槽)

 index.vue(引入test.vue,注册)

v-slot:可简写为#

 <template>
  <p>具名插槽</p>
    //使用插槽
    <test>
//必须用template包裹
       <template v-slot:header>
             <p>插入的内容</p>
        </template>
    </test>
 <test>
//必须用template包裹
       <template #footer>
             <p>插入的内容</p>
        </template>
    </test>
</template>

test.vue

<template>
  <p>具名插槽</p>
//solt占位
    <slot name="header"></slot>
    <footer>
        <slot name="footer"></slot>
    </footer>
</template>

3.作用域插槽(slot绑定数据)

  index.vue(引入test.vue,注册)

 <template>
  <p>具名插槽</p>
    //使用插槽
    <test>
//必须用template包裹
       //<template v-slot:header="scope">
         //    <p>{{scope}}</p>
        //</template>

//解构赋值
 <template v-slot:header="{msg,info}">
             <p>{{msg}}</p>
            <p>{{info.phone}}</p>

        </template>

    </test>
 <test>
//必须用template包裹
       <template #footer>
             <p>插入的内容</p>
        </template>
    </test>
</template>

test.vue

<template>
  <p>具名插槽</p>
//solt占位
    <slot name="header" :msg="info" :msg2="message"></slot>
    <footer>
        <slot name="footer"></slot>
    </footer>
</template>
export default {
  name: 'App',
  data () {
   return {
    info:{
        phone:'1552555565',
        name:'zs'
    },
message:'1111'
   }
  },
}

版权声明:本文为Zt0118原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>