点击左上方“熊吱”关注我们吧!在Vue组件的使用过程中,常常会遇到组件大体框架相同,但是部分内容在不同页面上显示需求不同的情况,此时就可以使用插槽,类似于在组件中挖一个坑,可以进行组件模板的替换。

1

slot基本使用

插槽功能通过标签: 来实现。

首先我们实现一个template,其中使用slot标签添加了一个插槽,插槽中放置了一个按钮标签,当组件标签中未添加内容时,就会默认显示按钮标签。

          

我是组件模板

默认按钮

    

接着在DOM中对组件标签使用:

    

我是P标签

我是P标签

我是span标签 我是i标签     

显示效果:

可以看出:

  1. 可直接在模板中使用一组标签进行插槽的添加;

  2. 若slot标签中添加了内容,但DOM使用组件标签未填充元素,slot标签中的内容会作为默认值显示。

  3. DOM中组件标签中填充的内容,无论一个或多个,都会替换slot标签默认值,一起作为替换元素。

2

具名插槽

有时我们使用组件时需要多个插槽,就需要区分开每个插槽。

slot标签可以通过name属性给每个插槽命名:

          
左边 中间 右边

    

上述代码中,定义了left、right两个具名插槽,中间还有一个无名插槽,无名插槽有一个默认的名字:default。

在DOM中给插槽提供内容时,需要在元素上使用v-slot指令,并且在v-slot后跟上插槽的名称:

                       left插槽                  默认插槽                  right插槽             

没有被template包裹的内容会传入到无名插槽中。

注:v-slot指令只能添加在标签上(除了独占默认插槽的缩写语法,见3.1节)。

2.1 v-slot语法糖

v-slot:可以使用语法糖#来替换,例如v-slot:right可以写为#right

3

编译作用域

组件都有自己的编译作用域,比如在子组件中定义的data内容,在父组件中是不能访问的。但是在使用插槽的时候,有时往往需要替换的插槽内容能够访问子组件的数据,就会用到插槽Props

下列代码中,子组件的data定义了一个user对象,其中包含firstname与lastname的值,为了在父组件中能访问到user,我们就将user作为slot元素的一个attribute,通过v-bind绑定在slot标签上,此时被绑定的user就叫做插槽Props

子组件的template如下:

          
{{user.lastname}}

    

然后在父级作用域中,使用v-slot来定义插槽Props的名字,这里使用的名称为slotProps,名称可以自定义,然后就可以在Mustache语法中使用插槽名称.插槽Props.属性来访问子组件的数据:

                        {{slotProps.user.firstname}}              

3.1 独占默认插槽的缩写语法

在第二节最后说到v-slot只能绑定在template上,而下面这种情况就是唯一的例外:当被提供的内容只有默认插槽(除了默认插槽不能再含有具名插槽或多个插槽)时,组件的标签才可以被当做插槽的模板来使用,有以下两种写法:

                      {{slotProps.user.firstname}}                             {{slotProps.user.firstname}}      

ENDVue之路系列文章:Vue之路 | 07-Vue组件化实现和使用Vue之路 | 06-表单绑定v-modelVue之路 | 05-v-on、v-if、v-forVue之路 | 04-计算属性computedVue之路 | 03-插值操作与V-bindVue之路 | 02-VSCODE添加Vue模板Vue之路 | 01-Vue安装与初体验

微信:熊吱

扫码关注我们

互联网知识交流平台

你的每个赞和在看,我都喜欢!

vue slot插槽_Vue之路 | 08vue插槽slot使用相关推荐

  1. vue + element-ui 聊天_Vue 插槽详解

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下前端几种高级布局的方式的相关知识,今天跟大家分享Vue ...

  2. vue封装背景知识小插曲之插槽slot的用法

    vue封装背景知识小插曲之插槽slot的用法 一 什么是插槽slot,都可以干啥? 二 常见的插槽用法 一 什么是插槽slot,都可以干啥? 直白点说就是子组件使用<slot> 先占了个地 ...

  3. vue源码学习第六篇--插槽(slot)

    我们在构建页面过程中一般会把用的比较多的公共的部分抽取出来作为一个单独的组件,但是在实际使用这个组件的时候却又不能完全的满足需求,我希望在这个组件中添加一点东西,这时候我们就需要用到插槽来分发内容. ...

  4. 六十三、Vue中非父子(兄弟)组件间传值,插槽的使用和作用域插槽(非常重要)

    2020/10/18 . 周日.今天又是奋斗的一天. @Author:Runsen @Date:2020/10/18 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是 ...

  5. 前端框架Vue:组件之间的通信、插槽的使用

    Vue组件与插槽 一.组件化开发思想 组件化规范 Web Components 我们希望尽可能多的重用的代码 自定义组件的方式不太容易(html,js ,css) 多次使用组件可能导致冲突 二.组件注 ...

  6. 【Vue知识点- No6.】动态组件、插槽、自定义指令、tabbar案例

    动态组件.插槽.自定义指令 学习目标 1.能够了解组件进阶知识. 2.能够掌握自定义指令的创建和使用. 3.能够完成tabbar案例的开发. 1.组件进阶 1.0 动态组件 问题:如何切换2个组件,互 ...

  7. Vue2基础- slot 插槽使用(包括动态插槽示例)

    文章目录 插槽是什么 编译作用域 作用域插槽 具名插槽 后备内容(插槽的默认值) 动态插槽名 在线示例 插槽是什么 插槽就是Vue实现的一套内容分发的API,这套 API的设计灵感源自 Web Com ...

  8. slot传函数 vue_vue中的插槽slot理解

    本篇文章参考赛冷思的个人博客 1.函数默认传参 在我们写js函数我们的可能会给他们一个默认的参数,写法是 functionshow(age,name){var age = age || 20;var ...

  9. vue.js 的学习之路

    转自:http://www.cnblogs.com/CyLee/p/5813721.html 技术栈 # vue官网 http://vuejs.org/# Vuex中文手册 http://vuex.v ...

  10. vue手风琴组件_Vue 2的Badger手风琴组件

    vue手风琴组件 Vue-Badger手风琴 (vue-badger-accordion) Badger-Accordion Component for Vue 2.0. Vue 2.0的Badge- ...

最新文章

  1. 代码生成器前戏 之 数据库元数据
  2. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem D. Grumpy Cat 交互题
  3. 智能视觉组赛博 -10赛后反馈
  4. 三层交换机如何封装trunk_锐捷交换机常用配置命令汇总
  5. 【数据挖掘】理解数据挖掘
  6. php snoopy视频教程,php的Snoopy类
  7. 基于uCOSII的LCD驱动实验
  8. raspberry pi_使用Raspberry Pi和pi-hole阻止网络上的广告
  9. html+默认ie11,IE11浏览器设置默认浏览器的方法
  10. 【Dynamics365】创建报表
  11. IT人士如何提高软件下载的速度
  12. 四色定理java_四色定理中公理的证明
  13. Python | 人脸识别系统 — 用户操作
  14. 2019 虎鲸杯电子取证大赛赛后复盘总结
  15. 南开计算机学院拟录取分数线,速看!复旦、南开等多所大学强基计划拟录取名单及分数线公布...
  16. 加勒比海盗——最优装载问题
  17. case when 的用法详解
  18. 大厂卡你的学历,究竟是为了什么?
  19. DNS 的A name和C name的区别
  20. switch开关的async和await初体验

热门文章

  1. 复制VIM编辑的文件和代码到别的地方
  2. pjsip在windows上编译
  3. 事物(三)之服务端事务匹配请求
  4. D - 迷宫游戏 (最短路径)
  5. java magnolia_Web内容管理系统 Magnolia 安装使用-挖掘优良的架构(2)
  6. centos 7.6镜像_Centos7 配置本地yum源为iso镜像
  7. 宝塔界面,添加数据库,数据库管理密码错误!
  8. 安大计算机学院李炜教授,李炜-北京航空航天大学计算机学院
  9. truncate表和update 效率_SQL中Truncate的用法
  10. cpu缓冲区大小怎么设置_遇到问题怎么办?手把手教你定位常见Java性能问题