vue3中Slot常见使用
程序开发
2023-09-04 23:30:54
下面先来认识一下插槽
在开发中,我们会经常封装一个个可复用的组件:
- 前面我们会通过props传递给组件一些数据,让组件来进行展示;
- 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些元素;
- 我们应该让使用者可以决定某一块区域到底存放什么内容和元素;
如何使用插槽slot?
- 插槽的使用过程其实是
抽取共性、预留不同
; - 我们会将共同的元素、内容依然在组件内进行封装;
- 同时会将不同的元素使用slot作为占位,让外部决定到底显示什么样的元素;
- 在封装组件中,使用特殊的元素就可以为封装组件开启一个插槽;
- 该插槽插入什么内容取决于父组件如何使用;
插槽的基本使用
App.vue
我不是插槽的组件
插槽里面很多内容
你信不信我啦啦啦啦啦
MySlotCpn.vue
组件的开始
我是插槽,没有填写信息,我就是默认的 组件的结束
MyInputCpn.vue
具名插槽的使用-动态插槽名
- 具名插槽顾名思义就是给插槽起一个名字, 元素有一个特殊的 attribute:name;
- 一个不带 name 的slot,会带有隐含的名字 default;
我们可以通过 v-slot:[dynamicSlotName]方式动态绑定一个名称;
具名插槽使用的时候缩写:
跟 v-on 和 v-bind 一样,v-slot 也有缩写;
即把参数之前的所有内容 (v-slot:) 替换为字符 #;
我是左边的插槽 我是中间的插槽我是右边的插槽我是语法糖和动态插槽
渲染作用域
在Vue中有渲染作用域的概念:
- 父级模板里的所有内容都是在父级作用域中编译的;
- 子模板里的所有内容都是在子作用域中编译的;
案列
认识作用域插槽
但是有时候我们希望插槽可以访问到子组件中的内容是非常重要的:
- 当一个组件被用来渲染一个数组元素时,我们使用插槽,并且希望插槽中没有显示每项的内容;
- 这个Vue给我们提供了作用域插槽;
使用步骤
ShowNames.vue
App.vue
我是左边的插槽 我是中间的插槽我是右边的插槽我是语法糖和动态插槽
{{ names.item }}-{{ names.index }}
// 如果我们有默认插槽和具名插槽,那么按照完整的template来编写{{ slotProps.item }}---{{ slotProps.index }}
// 果我们的插槽只有默认插槽时,组件的标签可以被当做插槽的模板来使用,这样,我们就可以将 v-slot 直 接用在组件上
//如果我们的插槽是默认插槽default,那么在使用的时候 v-slot:default="slotProps"可以简写为vslot="slotProps":我是name的插入内容
标签:
上一篇:
使用Visual Studio Code开发AngularJS应用
下一篇:
相关文章
-
无相关信息