slot的理解

一. 什么是slot?

在Vue中,slot 是一种用于在组件之间进行内容分发的机制。它允许我们在组件的模板中定义具有特定名称的插槽,并在组件的使用者中填充相应的内容。

二. 使用场景

  1. 通过插槽可以让用户可以拓展组件,去更好地复用组件和对其做定制化处理

  2. 如果父组件在使用到一个复用组件的时候,获取这个组件在不同的地方有少量的更改,如果去重写组件是一件不明智的事情

  3. 通过slot插槽向组件内部指定位置传递内容,完成这个复用组件在不同场景的应用

三.分类

1. 默认插槽

就是该插槽没有名字,父组件在使用的时候,直接在子组件的标签里写入内容就行。

子组件 child.vue

javascript 复制代码
<template>
  <div>
    <slot>父组件想展示的内容写在这里边</slot>
  </div>
</template>

父组件 father.vue

javascript 复制代码
<template>
  <div>
    <Child>
      <p>Custom Content</p>
    </Child>
    <Child></Child>
  </div>
</template>
<script>
	import Child from '../components/child'
	export default {
		name:'Father',
		components:{Child}
	}
</script>

2. 具名插槽

子组件用name属性来表示插槽的名字,不传为默认插槽

子组件 child.vue

javascript 复制代码
<template>
  <form >
    <div class="auth">
	    <slot>插槽后备的内容</slot>
	  	<slot name="content">插槽后备的内容</slot>
    </div>
  </form>
</template>

父组件 father.vue

javascript 复制代码
<child>
    <template v-slot:default></template>
    <template #content></template>
</child>

3. 作用域插槽

子组件 child.vue

javascript 复制代码
<div>
	<!-- 设置默认值:{{person.name}}获取 baijing -->
	<!-- 如果father.vue中给这个插槽值的话,则不显示 baijing -->
	<!-- 设置一个 usertext 然后把person绑到设置的 usertext 上 -->
	<slot v-bind:usertext="person">{{person.name}}</slot>
</div>

//定义内容
data(){
  return{
	person:{
	  name:"baijing",
	  age: 20
	}
  }
}

父组件 father.vue

javascript 复制代码
<div>
  <test v-slot:default="slotProps">
    {{slotProps.usertext.age}}
  </test>
</div>

绑定在 元素上的特性被称为插槽 prop。在父组件中,我们可以用 v-slot 设置一个值来定义我们提供的插槽 prop 的名字,然后直接使用就好了

相关推荐
码界筑梦坊1 天前
332-基于XGBoost与SHAP的可穿戴设备亚健康风险识别系统
python·数据分析·flask·vue·毕业设计
上单带刀不带妹1 天前
【Axios 实战】网络图片地址转 File 对象,附跨域解决方案
开发语言·前端·javascript·vue
SuperEugene1 天前
前端模块化与 import/export入门:从「乱成一团」到「清晰可维护」
前端·javascript·面试·vue
~央千澈~2 天前
优雅草正版授权系统 - 优雅草科技开源2月20日正式发布
python·vue·php·授权验证系统
Roc.Chang3 天前
Vite 启动报错:listen EACCES: permission denied 0.0.0.0:80 解决方案
linux·前端·vue·vite
PD我是你的真爱粉3 天前
Vite 项目搭建与Pinia状态管理
前端框架·vue
麦麦大数据3 天前
F071_vue+flask基于YOLOv8的实时目标检测与追踪系统
vue.js·yolo·目标检测·flask·vue·视频检测
lyyl啊辉4 天前
1. Vue3简介
vue.js·vue
lyyl啊辉4 天前
4. Vue-Router机制
vue
FindYou.6 天前
基于mdEditor实现数据的存储和回显(导出pdf&表情包&目录)
javascript·vue