vue2的插槽基本使用

vue2插槽的基本使用

匿名插槽 : 没有名字的插槽
具名插槽 : 有名字的插槽
作用域插槽 :传值

创建一个公共的组件HelloWorld.vue,
匿名插槽

<template>
  <div class="hello">
    <slot name="header"></slot>
    <p>接收到插槽内容</p>
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
     
    }
  }
}
</script>

创建一个业务组件 HomeView.vue 并在该组件内使用上面带有插槽的组件(HelloWorld.vue)

<template>
  <div class="home">
    <HelloWorld>
      <template>
        <p style="color: red">内容提示</p>
      </template>
    </HelloWorld>
  </div>
</template>

<script>
import HelloWorld from '@/components/HelloWorld.vue'
export default {
  name: 'HomeView',
  components: {
    HelloWorld
  }
}
</script>

具名插槽 修改HelloWorld.vue组件 增加name属性 加上名字

<template>
  <div class="hello">
    <slot name="header"></slot>
    <p>接收到插槽内容</p>
    <slot name="footer"></slot>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      
    }
  }
}
</script>
<style scoped></style>

在业务组件 HomeView.vue 使用具名插槽

<template>
  <div class="home">
    <HelloWorld>
      <template #header>
        <p style="color: red">头部内容提示</p>
      </template>
      <template #footer>
        <p style="color: orange">底部内容提示</p>
      </template>
    </HelloWorld>
  </div>
</template>

<script>
import HelloWorld from '@/components/HelloWorld.vue'
export default {
  name: 'HomeView',
  components: {
    HelloWorld
  }
}
</script>

显示的效果
在这里插入图片描述
作用域插槽 修改HelloWorld.vue组件传 给具名插槽header传一个arr数组

<template>
  <div class="hello">
    <slot name="header"></slot>
    <p>接收到插槽内容</p>
    <slot name="footer" :arr="arr"></slot>
  </div>
</template>
<script>
export default {
  name: 'HelloWorld',
  data() {
    return {
      arr: ['a', 'b', 'c', 'd']
    }
  }
}
</script>

在HomeView.vue使用如下

<template>
  <div class="home">
    <HelloWorld>
      <template>
        <p style="color: red">头部内容提示</p>
      </template>
      <template #footer="{ arr }">
        <p style="color: orange">底部内容提示</p>
        <div v-for="item in arr" :key="item">{{ item }}</div>
      </template>
    </HelloWorld>
  </div>
</template>
<script>
import HelloWorld from '@/components/HelloWorld.vue'
export default {
  name: 'HomeView',
  components: {
    HelloWorld
  }
}
</script>

显示的效果如下所示

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值