uniapp中slot插槽用法
什么是插槽?
插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性。
插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示就由子组件来进行控制
使用easycom 组件化配置方法
pages.json中配置easycom
在pages.json对象默认加入这段代码进行easycom配置
"easycom": { //组件化配置"autoscan": true, //是否开启自动扫描,开启后将会自动扫描符合components/组件名称/组件名称.vue目录结构的组件"custom": {// "uni-(.*)": "@/components/uni-$1.vue", // 匹配components目录内的vue文件"uni-(.*)": "@/components/uni-$1/uni-$1.vue", // 匹配components目录下组件名称/组件名称内的vue文件"vue-file-(.*)": "packageName/path/to/vue-file-$1.vue" // 匹配node_modules内的vue文件}}
在components文件中新建index-list文件夹和文件,这种格式就可以直接在代码里用组件而不需要引入和注册
1、默认插槽的使用:
slot-one组件:
<template><view><view>我是子组件</view><slot></slot></view>
</template>
父组件引用slot-one组件:
<template><view class="slot-item"><slot-one>父组件插槽内容</slot-one></view>
</template>
<script>
</script>
<style scoped>.slot-item{padding:50rpx;}
</style>
效果:
2、插槽内可以包含任何模板代码,包括 HTML:
slot-one组件如上不变。
父组件引用slot-one组件:
<view class="slot-item"><slot-one><text style="color:red">插槽内可以包含任何模板代码,包括 HTML</text></slot-one>
</view>
效果:
3、插槽内可以包含其它的组件,下面的内容来自slotTwo组件:
slot-one组件如上不变,slot-two组件:
<template><view class="slottwo"><view>slottwo</view></view>
</template>
父组件引用slot-one组件,slot-one包含slot-two组件:
<view class="slot-item"><slot-one><text style="color:red">插槽内可以包含其它的组件,下面的内容来自slotTwo组件</text><slot-two></slot-two></slot-one></view>
效果:
4、后备内容:
有时为一个插槽设置具体的后备 (也就是默认的) 内容是很有用的,它只会在没有提供内容的时候被渲染,
但是如果我们提供内容,则这个提供的内容将会被渲染从而取代后备内容
slot-one组件(带有默认值):
<template><view><view>我是子组件</view><slot>slot后备内容</slot></view>
</template>
父组件引用slot-one组件:
<view class="slot-item"><slot-one></slot-one><slot-one><text style="color:red">提供的内容将会被渲染从而取代后备内容</text></slot-one></view>
效果:
5、具名插槽:
有时我们需要多个插槽, 元素有一个特殊的 attribute:name,语法: ,用来定义额外的插槽
一个不带 name 的 出口会带有隐含的名字“default”
在向具名插槽提供内容的时候,我们可以在一个 元素上使用 v-slot 指令,并以 v-slot 的参数的形式提供其名称
v-slot 也有缩写,即把参数之前的所有内容 (v-slot:) 替换为字符 #。例如 v-slot:header 可以被重写为 #header
v-slot 只能添加在 上 ,绑定在其他元素上用slot="**"
slot-two组件:
<template><view class="slottwo"><view>slottwo</view><slot name="header"></slot><slot></slot><slot name="footer"></slot></view>
</template>
父组件引用slot-two组件:
<view class="slot-item"><slot-two><view>default:没有指定name的默认插槽的内容</view><template v-slot:header><text>header:我是name为header的slot</text></template><text slot="footer">footer:我是name为footer的slot</text></slot-two></view>
效果:
6、解构插槽 Prop:
绑定在 元素上的 attribute 被称为插槽 prop。
在父级作用域中,我们可以使用带值的 v-slot 来定义我们提供的插槽 prop 的名字
slot-three组件:
<template><view>我是作用域插槽的子组件<slot :user="user" :city="city"></slot></view>
</template><script>export default {data() {return {user: [{name: 'Jack',sex: 'boy'},{name: 'Jone',sex: 'girl'},{name: 'Tom',sex: 'boy'}],city: [{name: '北京'},{name: '上海'},{name: '广州'}]};}}
</script>
父组件引用slot-three组件:
<view class="slot-item"><slot-three><template v-slot="{user,city}"><view v-for="(item, index) in user" :key="index">{{item.name}}</view><view v-for="(item, index) in city" :key="index">{{item.name}}</view></template></slot-three></view>
效果:
7、示例:
todoList组件:
<template><ul><li v-for="todoitem in todos" :key="todoitem.id"><!-- 我们为每个 todoitem 准备了一个插槽, 将 `todoitem` 对象作为一个插槽的 prop 传入。 --><slot name="todo" :todoitem="todoitem"><!-- 后备内容 -->{{ todoitem.text }}</slot></li></ul>
</template>
父组件引用todoList组件:
<view class="slot-item"><todo-list :todos="todos"><template v-slot:todo="{ todoitem }"><span v-if="todoitem.isComplete">✓</span>{{ todoitem.text }}</template></todo-list></view>data() {return {todos: [{text: "aa",id: "aa",isComplete: true}, {text: "bb",id: "bb",isComplete: true}, {text: "cc",id: "cc",isComplete: false}]};},
结果
原文链接:https://blog.csdn.net/LzzMandy/article/details/105864225
uniapp中slot插槽用法相关推荐
- Vue 中 slot插槽 的使用
Vue 中 slot插槽 的使用 插槽就是子组件提供给父组件使用的一个占位符,用<slot></slot>表示, 父组件可以在这个占位符填充任何模板代码,如HTML.组件等,填 ...
- Vue3中slot插槽使用方式
一文搞懂Vue3中slot插槽的使用! 使用 Vue 的小伙伴相信你一定使用过插槽,如果你没有用过,那说明你的项目可能不是特别复杂.插槽(slot)可以说在一个 Vue 项目里面处处都有它的身影,比如 ...
- Vue中slot插槽的使用
为什么使用slot slot翻译为插槽: 在生活中很多地方都有插槽,电脑的USB插槽,插板当中的电源插槽 插槽的目的是让我们原来的设备具备更多的扩展性 比如电脑的USB我们可以插入U盘.硬盘.手机.音 ...
- 「后端小伙伴来学前端了」关于 Vue中 Slot 插槽的使用,实用且也是组件中必会的一个知识,另外也可以实现父子组件之间通信
前言 插槽可以说是 Vue 中非常重要的一部分吧,在我学习和练习的过程中,当组件搭配着插槽一起使用的时候,会发挥的更好一些.更多时候也会更加方便. 今天介绍Vue中三种插槽吧:默认插槽.具名插槽.作用 ...
- vue 组件封装 确认弹框带可以自定义titile ,内容,和取消,确定按钮的弹窗 slot插槽
一,子组件 modalConfirm.vue 文件封装 <template><div class="confirmBgc animations" :style=& ...
- vue中slot(插槽)详解,slot、slot-scope和v-slot
slot是什么 slot,也称插槽,可以类比为插卡式的FC游戏机,游戏机(子组件)暴露卡槽(插槽)让用户插入不同的游戏磁条(自定义内容),游戏机会读取并加载磁条里的游戏 Vue的slot,是组件的一块 ...
- vue 2.6 中 slot 的新用法
译者:前端小智 原文:www.smashingmagazine.com/2019/07/usi- 为了保证的可读性,本文采用意译而非直译. 最近发布不久的Vue 2.6,使用插槽的语法变得更加简洁. ...
- vue slot scope使用_20、slot插槽的用法
重点: 单个插槽.具名插槽.作用域插槽的用法: 访问插槽的方法. 其实本小白对插槽理解的还不深,哪些场景会经常用到插槽也不了解. 但是本着"大胆猜测"的理念,我的猜测如下: 假设有 ...
- Vue在渲染函数createELement和JSX中使用插槽slot
Vue对于插槽有两个专门的APIvm.$slots和vm.$scopedSlots,分别是普通插槽和作用域插槽,使用JSX语法或渲染函数的时候,定义插槽将使用上述两个API. 渲染函数createEl ...
最新文章
- 完整SQL分页存储过程(支持多表联接)
- 防止MDI子窗体多次实例化的代码
- c++fibonacci search斐波那契搜索的实现算法(附完整源码)
- Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc
- 《DSP using MATLAB》Problem 7.2
- 加州大学欧文分校 计算机专业,UCI的Computer Science「加州大学欧文分校计算机科学系」...
- SAP License:如何学好SAP BASIS
- nginx trac mysql svn_linux下nginx+svn
- Linux 14.04 CUDA theano安装
- python 数据挖掘算法
- JS实现自动填写问卷【JS小工具】
- 网络安全——sql注入漏洞拓扑图
- python爬取皮肤_如何用Python爬取LOL官网全英雄皮肤
- PHP快速链接,PHP快速检测死链接
- 读写三维数据.stl文件
- 奥村マヨ - 見えない翼
- 布线前,布局这步极为关键!分享一些PCB设计布线注意要点
- 计算机考试设置背景音乐,给Excel表格添加背景音乐
- [转贴] 这是我和一个偷吃禁果的女孩子的故事
- [笛卡儿积]业务中的复选框条件--输出所有的情况结果