文章目录

  • 求一键三连
  • 重点
  • 认识插槽
  • 插槽的使用
    • 多个插槽(具名插槽 name=''name" #name)
    • 当图片路径较深时怎么办:使用@
    • 渲染作用域
  • 作用域插槽(插槽传递子组件属性)
    • 子组件的操作:传递属性
    • 父组件操作:接受属性并使用

求一键三连

希望大家看完觉得有用的话点赞、关注和收藏,感谢!!!

重点

插槽在组件封装中特别有用,尤其是在组件库项目中,因为之前没有复习插槽,导致很多东西都特别难以实现,卡了很多天。
但是只要使用了插槽,具名插槽,作用域插槽,很多东西都迎刃而解,插槽让组件封装变的更加灵活,也让组件库成为可能。

认识插槽

更加动态的使用组件


slot是占位,让父组件决定使用什么元素。
slot是给有不同需要的时候用的

插槽的使用

在子组件中间放入需要插入的东西,和子组件插槽的位置是对应上的。
子组件:在template中默认值 表示这是一个插槽
父组件:

   <show-message title="哈哈哈"><button>我是按钮元素</button>   //此时插槽中放的就是按钮</show-message>


插槽是可以设置默认值的,在slot里面写上内容就是没有传递东西时的默认值

多个插槽(具名插槽 name=''name" #name)

如果不命名直接用,则在调用子组件时放入的html元素全都放在一个插槽内。
(2023.2.4 因为忘记了这个具名插槽,所以效果一直很差,一定要好好复习,别总想往前走!)


如何使用,在父组件中调用子组件时,在子组件中写<template v-solt:插槽名>具体的东西
子组件: <slot name="left">left</slot> 在插槽上写上name
父组件: 推荐用# 且特别注意只能写在一个template上面

<nav-bar>
<template #left>//这里用#插槽名来表示对应插槽名<button>{{leftcontent}}</button>
</template>
或者
<template v-slot:right>  //v-slot:插槽名<a href="#">登录</a>
</template>


动态插槽(做个了解)

当图片路径较深时怎么办:使用@

@/img/图片.jpg 这样就是先找到img文件夹然后再找图片

渲染作用域


简单就是每个组件里面的内容都必须在本组件中定义使用,无法跨组件调用。
在本组件中编写的,那么用到的数据都必须是本组件中的数据
例子:
在刚才具名插槽中,有一个插槽在父组件中是按钮,按钮的内容是{{leftText}},那么这个模板语法的内容leftText必须是在父组件app.vue中定义好的,也就是它的数据必须在本组件中定义。
虽然它最后展示是在子组件中展示,但是它是在父组件中使用的,所以必须在父组件中定义。


作用域插槽(插槽传递子组件属性)

我们希望对之前的案例做一个更改,之前案例的子组件中格式都是写死的,都是在子组件中定义好的,比如说都是span,并没有使用插槽,那么我们希望可以使用插槽来进行更改,可以由父组件决定是span或者说按钮等内容。
首先是使用插槽,那么span就变为默认值,如果没有使用插槽则默认为span

     <slot ><span>{{ item }}</span></slot>

那么就有一个问题:子组件中for循环的item如何传递给父组件
(这个真的特别重要,因为不记得作用域插槽的用法,在自己封装组件的时候卡了好几天,基础真的太重要了)

父组件插槽原来是这样的,这个item我们拿不到

所以我们要解决的就是一个插槽传递信息的问题,在使用的插槽的时候可以把子组件的数据传出来
我们传递给插槽。

子组件的操作:传递属性

在插槽上写: 用:绑定一个属性传递出去 :item=“要传递的属性”
这里呢也有一个注意事项,那就是:
在vue中,动态绑定的属性都要加冒号:
而静态属性则不用,比如这里的abc=“cba”,它就是静态的
但是对于item来说它是动态的,所以必须要加冒号:

 <slot :item="item" abc="cba"><span>{{ item }}</span></slot>

父组件操作:接受属性并使用

用template #:插槽名=“接受属性名” 在这里默认使用props命名(可以用其他命名)
这里的props包含了该插槽所有传递出来的属性,包括item和abc
之后就可以在template中使用接受到的数据了props.item

  <template v-slot:name="props"><button>{{ props.item }}</button></template>
//另一种写法<template #name="props"><button>{{ props.item }}</button></template>

在这里呢,就可以不写具名,就是#=“props”,因为此时看只有一个默认插槽!

这个应用场景真的就非常实际,很常见,老师讲的都是实际开发的例子

语法糖:
如果只有一个默认插槽, 那么template可以省略,因为没有必要写template,不需要具名
#=“props”


特别注意最后 一个,只要出现多个插槽,请始终为所有的插槽使用完整的基于template的语法。

重写案例错误;
template中是不可以写后面这些的,因为无法监听到必须要写到模板里的具体元素里
template标签内容天生不可见,设置了display:none;


正确的写法:

VUE——slot插槽 (特别重要,尤其是作用域插槽)相关推荐

  1. Vue中的v-slot详解,作用域插槽和具名插槽

    1.具名插槽 有时候我们希望在指定的位置输出我们的子元素,这时候具名插槽就排上了用场. //组件调用时 <MyFooter v-red :age.sync="age"> ...

  2. Vue.js插槽slot和作用域插槽slot-scope学习小结

    一般来说,在Vue项目中使用父子组建时,都是把通用的HTML结构提取出来写成一个子组件,需要动态展示的数据用过prop属性传递,不过有时候我们可能想给子组件传递一个HTML代码,这个时候用prop不太 ...

  3. [vue] slot插槽 默认插槽,具名插槽,作用域插槽

    文章目录 插槽 不使用插槽 效果 分析 默认插槽 效果 分析 具名插槽 效果 分析 作用域插槽 效果 分析 再次理解作用域插槽 代码: 默认插槽: 具名插槽 作用域插槽 插槽 作用:让父组件可以向子组 ...

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

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

  5. Vue基础学习笔记Day06_动态组件_插槽_自定义指令

    今日目标: 能够了解组件进阶知识 能够掌握自定义指令创建和使用 学习内容: 学习目录: 组件进阶 自定义指令 今日总结 面试题 知识点自测 组件创建, 注册和使用 - 伸手就来特别熟练 指令的作用 1 ...

  6. 组件间数据交互——组件插槽的作用||具名插槽用法|| 作用域插槽

    组件插槽的作用 组件插槽:父组件向子组件传递内容 <!DOCTYPE html> <html lang="en"> <head><meta ...

  7. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数

    目录 组件结构 组件的命名规则: 组件的data参数 <font color='red'> 组件的父子传值prop(通信) <font color='red'>组件的子--&g ...

  8. Vue slot 详解

    在Vue中,我们使用组件来组织页面和组织代码,类似于搭积木,每一个组件都是一个积木,使用一些相同或者不同组件就能搭建出我们想要的页面.slot(插槽)是组件功能的重要组成部分,插槽必须用于组件才有意义 ...

  9. Vue中slot的使用(具名插槽与作用域插槽)

    文章目录 前言 一.什么是插槽 二.前期准备 三.具名插槽的使用 1.子组件配置slot 2.使用者App.vue配置数据 3.结果展示 4.具名插槽总结 四.作用域插槽的使用 1.子组件配置slot ...

最新文章

  1. python渲染html页面_从零开始学Python - 第031课:用Python解析HTML页面
  2. 【知识积累】SBT+Scala+MySQL的Demo
  3. Rational rose中实心菱形的画法
  4. Eclipse使用Android2.3和3.0的SDK
  5. 木糖醇、可口可乐零度:可怕的传闻
  6. HTML对字体的操作详解
  7. 如何优雅的链式取值之 MayBe 函子
  8. web前端工作笔记008---js延迟执行代码
  9. HIT Software Construction Review Notes(3-1 Data Type and Type Checking)
  10. java应用商店,API for Java 8
  11. C++ STL getline函数
  12. 一天一个设计模式:工厂方法模式
  13. 证券基金行业那些智能XX(上)
  14. 网络营销之百度营销技巧(一) 百度知道推广日常手册
  15. 斐讯K2刷华硕固件教程(最新)
  16. Creo:Creo2.0安装实例教程之图文详细攻略
  17. EditText的属性介绍
  18. PS怎样去掉图片上的文字
  19. P2655 2038年问题
  20. Sia(Siacoin/SC/云储币)去中心化存储平台网址汇总

热门文章

  1. android qq skype,Skype更新改进了反应选择器 并在安卓上添加了背景模糊
  2. Linux nohup: 忽略输入重定向错误到标准输出端
  3. C#数据结构-约瑟夫问题
  4. 虚拟机NAT模式用nmtui配置ip
  5. spss多元非线性曲线拟合_都9102年了还在用SPSS做统计?Prism了解一下?
  6. 【acwing4408李白打酒】
  7. xmind序列码激活亲测可用版本
  8. 华为那款智慧屏用的鸿蒙系统,读创--华为智慧屏来了,将采用鸿蒙系统
  9. SIM A7670C MQTT
  10. matlab 并行计算使用心得 (不断补充)