什么是插槽?

插槽(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插槽用法相关推荐

  1. Vue 中 slot插槽 的使用

    Vue 中 slot插槽 的使用 插槽就是子组件提供给父组件使用的一个占位符,用<slot></slot>表示, 父组件可以在这个占位符填充任何模板代码,如HTML.组件等,填 ...

  2. Vue3中slot插槽使用方式

    一文搞懂Vue3中slot插槽的使用! 使用 Vue 的小伙伴相信你一定使用过插槽,如果你没有用过,那说明你的项目可能不是特别复杂.插槽(slot)可以说在一个 Vue 项目里面处处都有它的身影,比如 ...

  3. Vue中slot插槽的使用

    为什么使用slot slot翻译为插槽: 在生活中很多地方都有插槽,电脑的USB插槽,插板当中的电源插槽 插槽的目的是让我们原来的设备具备更多的扩展性 比如电脑的USB我们可以插入U盘.硬盘.手机.音 ...

  4. 「后端小伙伴来学前端了」关于 Vue中 Slot 插槽的使用,实用且也是组件中必会的一个知识,另外也可以实现父子组件之间通信

    前言 插槽可以说是 Vue 中非常重要的一部分吧,在我学习和练习的过程中,当组件搭配着插槽一起使用的时候,会发挥的更好一些.更多时候也会更加方便. 今天介绍Vue中三种插槽吧:默认插槽.具名插槽.作用 ...

  5. vue 组件封装 确认弹框带可以自定义titile ,内容,和取消,确定按钮的弹窗 slot插槽

    一,子组件 modalConfirm.vue 文件封装 <template><div class="confirmBgc animations" :style=& ...

  6. vue中slot(插槽)详解,slot、slot-scope和v-slot

    slot是什么 slot,也称插槽,可以类比为插卡式的FC游戏机,游戏机(子组件)暴露卡槽(插槽)让用户插入不同的游戏磁条(自定义内容),游戏机会读取并加载磁条里的游戏 Vue的slot,是组件的一块 ...

  7. vue 2.6 中 slot 的新用法

    译者:前端小智 原文:www.smashingmagazine.com/2019/07/usi- 为了保证的可读性,本文采用意译而非直译. 最近发布不久的Vue 2.6,使用插槽的语法变得更加简洁. ...

  8. vue slot scope使用_20、slot插槽的用法

    重点: 单个插槽.具名插槽.作用域插槽的用法: 访问插槽的方法. 其实本小白对插槽理解的还不深,哪些场景会经常用到插槽也不了解. 但是本着"大胆猜测"的理念,我的猜测如下: 假设有 ...

  9. Vue在渲染函数createELement和JSX中使用插槽slot

    Vue对于插槽有两个专门的APIvm.$slots和vm.$scopedSlots,分别是普通插槽和作用域插槽,使用JSX语法或渲染函数的时候,定义插槽将使用上述两个API. 渲染函数createEl ...

最新文章

  1. 完整SQL分页存储过程(支持多表联接)
  2. 防止MDI子窗体多次实例化的代码
  3. c++fibonacci search斐波那契搜索的实现算法(附完整源码)
  4. Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc
  5. 《DSP using MATLAB》Problem 7.2
  6. 加州大学欧文分校 计算机专业,UCI的Computer Science「加州大学欧文分校计算机科学系」...
  7. SAP License:如何学好SAP BASIS
  8. nginx trac mysql svn_linux下nginx+svn
  9. Linux 14.04 CUDA theano安装
  10. python 数据挖掘算法
  11. JS实现自动填写问卷【JS小工具】
  12. 网络安全——sql注入漏洞拓扑图
  13. python爬取皮肤_如何用Python爬取LOL官网全英雄皮肤
  14. PHP快速链接,PHP快速检测死链接
  15. 读写三维数据.stl文件
  16. 奥村マヨ - 見えない翼
  17. 布线前,布局这步极为关键!分享一些PCB设计布线注意要点
  18. 计算机考试设置背景音乐,给Excel表格添加背景音乐
  19. [转贴] 这是我和一个偷吃禁果的女孩子的故事
  20. [笛卡儿积]业务中的复选框条件--输出所有的情况结果

热门文章

  1. Fraunhofer ISE多结太阳能电池效率达30.2%
  2. WebView的截屏实现
  3. 进制转换与ascll码利用
  4. js之操作JSON数据
  5. ubuntu 安装redis
  6. Nginx处理请求的11个阶段
  7. 配置MOSS的FBA步骤与问题(发现设置权限策略的里选人不好用,选不到Provider的人)...
  8. Redis Info详解
  9. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)
  10. WCF加密操作(包括证书和证书+帐号密码)