素材巴巴 > 程序开发 >

vue3中Slot常见使用

程序开发 2023-09-04 23:30:54

下面先来认识一下插槽

在开发中,我们会经常封装一个个可复用的组件:

  1. 前面我们会通过props传递给组件一些数据,让组件来进行展示;
  2. 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些元素;
  3. 我们应该让使用者可以决定某一块区域到底存放什么内容和元素;

如何使用插槽slot?

  1. 插槽的使用过程其实是抽取共性、预留不同
  2. 我们会将共同的元素、内容依然在组件内进行封装;
  3. 同时会将不同的元素使用slot作为占位,让外部决定到底显示什么样的元素;
  4. 在封装组件中,使用特殊的元素就可以为封装组件开启一个插槽;
  5. 该插槽插入什么内容取决于父组件如何使用;

插槽的基本使用

在这里插入图片描述
App.vue


 

MySlotCpn.vue


 

MyInputCpn.vue


 

具名插槽的使用-动态插槽名

  1. 具名插槽顾名思义就是给插槽起一个名字, 元素有一个特殊的 attribute:name;
  2. 一个不带 name 的slot,会带有隐含的名字 default;

我们可以通过 v-slot:[dynamicSlotName]方式动态绑定一个名称;
具名插槽使用的时候缩写:
跟 v-on 和 v-bind 一样,v-slot 也有缩写;
即把参数之前的所有内容 (v-slot:) 替换为字符 #;

渲染作用域

在Vue中有渲染作用域的概念:

  1. 父级模板里的所有内容都是在父级作用域中编译的;
  2. 子模板里的所有内容都是在子作用域中编译的;

案列

在这里插入图片描述

认识作用域插槽

但是有时候我们希望插槽可以访问到子组件中的内容是非常重要的:

  1. 当一个组件被用来渲染一个数组元素时,我们使用插槽,并且希望插槽中没有显示每项的内容;
  2. 这个Vue给我们提供了作用域插槽;

使用步骤
在这里插入图片描述
ShowNames.vue


 

App.vue


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。