2021-08-06 vue笔记-插槽:匿名插槽,具名插槽和作用域插槽的定义和使用,在vue项目中使用插槽

本文介绍了Vue中的插槽,包括什么是插槽、插槽的作用,以及三种类型的插槽:匿名插槽、具名插槽和作用域插槽的定义与使用方法,通过示例详细解析了它们在网页和Vue项目中的应用。
摘要由CSDN通过智能技术生成

一,介绍插槽

1.什么是插槽?
理解

插槽就是在子组件中用<slot></slot>挖个坑,坑内内容由父组件来决定

子组件提供给父组件使用一个占位符slot,
父组件可在slot中填充任何模板代码,如 HTML、组件等,
填充的内容会替换子组件中的<slot></slot>标签。
作用

提高组件的重用能力

步骤

子组件:在指定位置留下<slot></slot>
父组件:引入,注册子组件,在子组件的同名占位符中写东西(如 HTML、组件等)

区分父子组件

(*换言之:使用了<slot></slot>或者<slot name-"xxx"></slot>的组件是子组件,使用了子组件名如<son>这里写准备插入子组件的内容</son>的是父组件)
这是区分插槽中的父子组件的标志,

对插槽的再次理解

即父组件把准备入子组件中的内容放在子组件占位符中,
(如<son>插入内容</son>,在实际开发中插入内容可以是好几层标签,十几到几十行或者更多行代码),
而子组件预留一个位,在需要放置插入内容的位置留下<slot></slot>,代表此处即将被放入父组件插入的内容

2.插槽的种类
  • 匿名插槽:没给插槽slot起名字,也叫默认插槽
  • 具名插槽:给slot起名字(定义具名插槽:使用到name特性)
  • 作用域插槽:本质是携带信息的匿名插槽

二.匿名插槽,具名插槽和作用域插槽的定义和使用:在网页和在项目中的使用示例

1.匿名插槽
1.1.匿名插槽定义和用法

略 详见上面的插槽介绍

1.2.在网页使用匿名插槽
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    h3{
     
      color:blueviolet
    }
  </style>
</head>
<body>
  <!--默认存在一个根组件,是所有组件的父组件 -->
  <div id="app">
    <niming>匿名</niming>
  </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 
<script>
  //全局注册子组件niming
  Vue.component("niming",{
     
    template:`<div>我是<h3><slot></slot></h3>插槽</div>`
  });
  new Vue({
     
    el:"#app"
  })
</script>
</html>

在这里插入图片描述

1.3.vue项目中使用匿名插槽

(正确单词应该是component不是componment,下同)

  • 父组件:FatherComponment.vue
<template>
  <div>
    <son-componment>
    	<h3>匿名</h3>
    </son-componment>
  </div>
</template>

<script>
import SonComponment from './SonComponment.vue';
export default {
     
  components: {
     SonComponment},
};
</script>

<style scoped>
</style>
  • 子组件SonComponment.vue
<template>
  <div>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue.js,有两种类型的插槽具名插槽作用域插槽。 1. 具名插槽(Named Slots): 具名插槽允许您在组件定义多个插槽,并在使用组件时根据插槽名称分发内容。这样可以更灵活地控制组件的结构和内容。具名插槽可以通过`<slot>`元素的`name`属性来定义,并且在使用组件使用相应的`<template>`元素来填充内容。 示例: ```html <!-- MyComponent.vue --> <template> <div> <slot name="header"></slot> <slot></slot> <slot name="footer"></slot> </div> </template> <!-- 使用 MyComponent.vue --> <template> <my-component> <template v-slot:header> <!-- 插入头部内容 --> </template> <!-- 默认插槽 --> <!-- 插入主要内容 --> <template v-slot:footer> <!-- 插入底部内容 --> </template> </my-component> </template> ``` 2. 作用域插槽(Scoped Slots): 作用域插槽允许您将父组件的数据传递给子组件,并在子组件定义渲染逻辑。这使得子组件更加灵活和可配置。作用域插槽通过使用`<slot>`元素的`name`属性和`v-slot`指令来定义,并在使用组件时传递数据给插槽。 示例: ```html <!-- MyComponent.vue --> <template> <div> <slot name="item" v-for="item in items" :item="item"></slot> </div> </template> <!-- 使用 MyComponent.vue --> <template> <my-component> <template v-slot:item="slotProps"> <!-- 使用 slotProps.item 渲染每个项目 --> </template> </my-component> </template> ``` 这样,父组件的`items`数组的每个元素都会传递给子组件作用域插槽,子组件可以根据传递的数据进行自定义渲染。 希望以上解释对您有所帮助,如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值