Vue插槽用法,在JSX中的用法

2023-11-19

注意, $scopedSlots会包含$slots里面的内容,所以我们两个一起使用的时候,名字要不一样

  • $scopedSlots 里面的属性值是函数,可以调用这个函数进行渲染,$scopedSlots会包含$slots
  • $slots 里面的属性值是一个VNode

img

插槽

通过 this.$slots.xxx 可以直接访问插槽内容

Child.vue 子组件

<template>
  <div>
    <!-- 默认插槽  可通过$slots.default访问 -->
    <slot></slot>
    <!-- 具名插槽--footer 可通过$slots.footer访问 -->
    <slot name="footer"></slot>
  </div>
</template>

jsx写法

export default {
  render() {
    return (
      <div>
        {/* 默认插槽 */}
        {this.$slots.default}

        {/* 具名插槽--footer */}
        {this.$slots.footer}
      </div>
    )
  }
}

Parent.vue 父组件

<template>
  <div>
    <Child>
      <!-- 使用 -->
      <div>这是默认插槽的内容啊</div>

      <!-- 具名插槽 -->
      <footer slot="footer">这是具名插槽的内容啊,</footer>
    </Child>
  </div>
</template>

jsx写法

export default {
  render(h) {
    return (
      <div>
        <Child>
          <div>这是默认插槽的内容啊</div>
          {/* 具名插槽 */}
          <footer slot="footer">这是具名插槽的内容啊,</footer>x
        </Child>
      </div>
    )
  },
}

作用域插槽

可以通过 this.$scopedSlots.xxx(传递的数据) 来渲染具体的组件

Child.vue 子组件


<template>
  <!-- 作用域插槽 -->
  <div>
    <header>
      <!-- 具名插槽作用域插槽--header  在 jsx 中可以通过 $scopedSlots.header(传递的数据) 渲染-->
      <slot name="header" msg="具名作用域插槽--header"></slot>
    </header>

    <main>
      <!-- 默认作用域插槽  在 jsx 中可以通过 $scopedSlots.default(传递的数据) 渲染-->
      <slot msg="默认作用域插槽"></slot>
    </main>
    <footer>
      <!-- 具名插槽作用域插槽--footer  在 jsx 中可以通过 $scopedSlots.footer(传递的数据) 渲染-->
      <slot name="footer" msg="具名作用域插槽--footer"></slot>
    </footer>
  </div>
</template>

jsx写法

export default {
  render() {
    return (
      <div>
        <header>{this.$scopedSlots.header?.({ msg: "具名作用域插槽--header" })}</header>
        <main>{this.$scopedSlots.header?.({ msg: "默认作用域插槽" })}</main>
        <footer>{this.$scopedSlots.footer?.({ msg: "具名作用域插槽--footer" })}</footer>
      </div>
    )
  },
}

Parent.vue 父组件

<template>
  <div>
    <Child>
      <!-- 三种方法可以使用 #、v-slot、slot-scope  -->

      <!-- 使用 slot-scope 写法 vue 2.6.0 已废弃的使用 slot-scope  -->
      <template slot="header" slot-scope="{ msg }">
        <div>{{ msg }}</div>
      </template>

      <!-- 默认作用域插槽  -->
      <template #default="{ msg }">
        {{ msg }}
      </template>

      <!-- 作用域插槽--footer -->
      <template v-slot:footer="{ msg }">
        {{ msg }}
      </template>
    </Child>
  </div>
</template>

jsx写法

export default {
  render() {
    return (
      <div>
        <Child
          scopedSlots={{
            header({ msg }) {
              return <div>{msg}</div>
            },
            default: (scoped) => {
              return scoped.msg
            },
            footer: ({ msg }) => {
              return msg
            },
          }}
        ></Child>
      </div>
    )
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue插槽用法,在JSX中的用法 的相关文章

随机推荐

  • 远程桌面连接技术【包含出现问题的解决手段】

    远程桌面连接技术 文章目录 远程桌面连接技术 前言 定义 远程连接的方法 远程桌面协议 RDP 由于我没有两台电脑 这里用虚拟机演示 1 为两台计算机设置相同的网段的 IP 地址 2 远程计算机的设置 2 1 在电脑中找到 远程桌面连接 2
  • 【单片机】keil和Proteus使用教程

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 kei
  • I/O流之进步认识、InputStream以及FileInputStream

    File类 用于描述一个文件或者文件夹的 通过File对象 我们可以读取文件或者文件夹的属性数据 如果我们需要读取文件的内容数据 那么我们需要使用IO流技术 IO流 Input Output IO流解决问题 解决设备与设备之间的数据传输问题
  • Windows 10安装WSA(WindowsSubsystemForAndroid)

    0 Win10安装好了仍然不能用 Win10安装好了仍然不能用 Win10安装好了仍然不能用 抱着试一试的心态装了一下 果然不行 随手记录下 1 首先 直接在应用商店里下载WSA是会报错的 所以要从微软商店把这个包下载下来 打开https
  • 下载 arm-linux-gcc

    https releases linaro org components toolchain binaries latest 4 arm linux gnueabihf 如果你使用的是ubuntu系统 你可以使用apt方式来安装arm li
  • mybatis plus中update_time字段未自动更新

    参考 MyBatis Plus官方文档 mybatis plus对于create time update time这样的数据库字段提供了自动插入功能 不用每次都手动进行更新 使用指南 加 TableField注解 自定义实现类TimeMet
  • 抗击疫情,AI可以做些什么?

    目前 新冠疫情的发展 可以说无时无刻不在牵动着大家的心 在这样的历史背景下 作为人工智能 数据科学领域的从业者 我们不妨来探讨一下 AI在遏制类似的疾病传播中 可以起到什么样的作用 当然 单纯靠AI技术确实无法让病毒停止传播 在一定时期内
  • STM32的单脉冲模式实现精确个数脉冲

    我们在做嵌入式产品的开发过程中 有时需要输出指定数目的脉冲 实现它的方法较多 这里介绍一种利用 STM32定时器的单脉冲模式来实现的方法 STM32定时器的单脉冲输出功能 其实是定时器输出比较功能的一个特殊应用 即让定时器在某个事件触发后的
  • keil mdk代码提示与代码补全设置

    主要参考https blog csdn net w5862338 article details 50520423 结合自己的实际问题 一旦习惯了一些实用的功能 当进入到类似的环境中而没有熟悉的功能 会觉得很不方便 代码提示与补全就是这样实
  • 60-400-045-使用-binlog-Maxwell读取MySQL binlog日志到Kafka

    文章目录 启动MySQL 创建maxwell的数据库和用户 在MySQL中创建一个测试数据库和表 启动Zookeeper 启动kafka 并创建主题为maxwell的topic 启动kafaka的消费者 检查数据是否到位 启动maxwell
  • [网络安全]sqli-labs Less-17 解题详析

    考察报错注入 本文使用extractvalue进行注入 原理及姿势可参考 网络安全 sqli labs Less 5 解题详析 判断注入类型 由以下回显可知 注入类型为单引号注入 查库名 账号输入admin 密码输入 1 and extra
  • Visual C++6.0的安装及使用教程

    Visual C 6 0下载链接 链接 https pan baidu com s 18ubNr9Gor3GbRrAkJe612w 密码 piek 对刚学习C语言或C 的小伙伴们来说 一款简单好用的编译器必不可少 今天给大家介绍的是Visu
  • 深度学习小白——DenseNet学习

    原论文地址 https arxiv org abs 1608 06993 用Keras写的pre model代码地址 https github com flyyufelix DenseNet Keras 一 主要原理 其借鉴了ResNet的
  • 深度学习如何集成领域知识?IBM研究等《知识增强深度学习》综述,全面阐述科学与经验知识增强的深度学习...

    来源 专知 尽管在过去的几年里 深度学习模型在许多不同的领域取得了巨大的成功 但通常数据匮乏 在不可见的样本上表现不佳 而且缺乏可解释性 目标领域往往存在各种先验知识 利用这些先验知识可以弥补深度学习的不足 为了更好地模仿人类大脑的行为 人
  • 下面是两种解决Redis击穿问题的方法,并给出相应的Java代码实现。

    Redis击穿问题指的是当一个key在缓存中过期时 恰好有大量并发请求访问该key 导致请求直接打到数据库 引起数据库压力过大 甚至宕机 方法一 使用互斥锁 在访问缓存之前 首先获取一个互斥锁 防止多个请求同时访问数据库 只有一个请求可以访
  • 转 用十条命令在一分钟内检查Linux服务器性能

    如果你的Linux服务器突然负载暴增 告警短信快发爆你的手机 如何在最短时间内找出Linux性能问题所在 来看Netflix性能工程团队的这篇博文 看它们通过十条命令在一分钟内对机器性能问题进行诊断 概述 通过执行以下命令 可以在1分钟内对
  • 开发百度地图定位APP(LBS)

    一 注册成为百度地图开发者 并获取开发密钥 获取密钥时需要进入Android studio使用keytool文件获取SHA1码 二 下载开发包解压并导入Android studio 选择自己需要的开发包下载 这里我选择的是基础地图基础定位J
  • C#类和对象--习题(2)成绩管理

    老师口中说 少用static 然后有习题要我们用static来写 实现简单学生成绩管理 两个类 方法带static 1 学生及信息录入 id name grade 2 输出成绩 3 修改成绩 4 查询成绩 5 显示成绩 6 退出系统 Met
  • 卓越性能代码_教你Win10启用卓越性能模式,效果明显!

    本文授权转载自公众号 labulac 当Windows 10更新到内部版本17333后 一些朋友可能发现 以往电源管理模式有节能 标准和高性能三个选项 现在装完系统默认启用的是标准选项 剩下的两个模式被隐藏了 当然我们也可以将这些电源模式找
  • Vue插槽用法,在JSX中的用法

    注意 scopedSlots会包含 slots里面的内容 所以我们两个一起使用的时候 名字要不一样 scopedSlots 里面的属性值是函数 可以调用这个函数进行渲染 scopedSlots会包含 slots slots 里面的属性值是一