vue3中通过ref获取子组件实例,取值为undefined

news2024/11/27 8:34:39

也就是Vue3如何通过 ref 获取子组件实例(子组件中的DOM结构、数据、及方法),今天写index.vue(父组件)时想获取子组件的数据和方法,通过给子组件绑定ref,打印子组件的数据为undefined;百度搜索常用方法为:

参考连接:Vue3---通过 ref 获取子组件实例(子组件中的DOM结构、数据、及方法),vue3中ref的妙用,vue中获取调用子组件方法,vue中使用子组件数据_vue3 获取组件ref_imkaifan的博客-CSDN博客代码如下:

子组件

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <input type="file" id="fileInput" name="file" multiple="multiple" @change="selectFile"/>
  </div>
</template>
 
<script>
import { defineComponent, ref } from 'vue'
export default defineComponent({
  name: 'HelloWorld',
  setup() {
    const msg = ref('HelloWorld') // 响应式数据:msg
    const fileList = ref([]) // 响应式数据:上传的文件列表
    function selectFile () { // 有文件上传时
      var file = document.getElementById('fileInput').files[0] // File(Blob) 对象   File extends Blob
      fileList.value.push(file)
    }
    return { // return中的数据会被父组件拿到
      msg,
      fileList,
      selectFile
    }
  }
})
</script>
 

父组件

<template>
  <div class="home">
    <HelloWorld ref="sonRef" />
    <button @click="getSonComponent">GetSonComponent</button>
  </div>
</template>
 
<script>
import { defineComponent, ref } from 'vue'
import HelloWorld from '@/components/HelloWorld.vue'
 
export default defineComponent({
  name: 'Home',
  components: {
    HelloWorld
  },
  setup(){
    const sonRef = ref(null) // 通过 ref 绑定子组件
    function getSonComponent () { // 通过 ref 获取子组件\
      // 获取子组件的数据
      console.log(sonRef.value)
      console.log(sonRef.value.msg)
      sonRef.value.fileList.forEach(item => {
        console.log(item)
      })
    }
    return {
      sonRef,
      getSonComponent
    }
  }
})
</script>

而我通过ref获取组件实例的数据打印为undefined的代码为:

父组件

<template>
    <div>
    <welcome></welcome>
    </div>
</template>

<script setup lang="ts">
  import welcome from './welcome.vue'
  import { ref,onMounted } from 'vue'

const welcomeRef = ref(null);
console.log("welcomeRef ",welcomeRef.value.isScroll)  //welcomeRef undefined
<script>

子组件

<template>
    <div v-if="isScroll">
    测试内容1
    </div>
    <div v-else>
    测试内容2
    </div>
</template>

<script setup lang="ts">
  import { ref,onMounted } from 'vue'

  const isScroll= ref(false);
<script>

后来查阅资料得出:

基于 <script setup> + TS 的情况

分三步

1、在子组件暴露需要被父组件调用的属性

2、在子组件定义类型

3、父组件引入子组件的类型,并定义 ref

第一步:defineExpose 暴露子组件属性
defineExpose({ select })

第二步:在子组件定义组件实例类型
如果完成第一步的话,在父组件调用子组件实例里某个属性的时候,TS 会报错,找不到该属性(但不影响运行)所以这里还需要定义一个类型,来声明子组件实例的类型

第三步:定义子组件的暴露的数据类型,并定义 ref
声明子组件的 ref ,获取子组件实例(注意只能使用暴露出来的属性)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小白参加红队,需要做好哪些准备?

在本文中&#xff0c;我们将为读者介绍要想加入红队&#xff0c;需要掌握哪些方面的技能。 CSDN大礼包&#xff1a;《黑客&网络安全入门&进阶学习资源包》免费分享 护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方一个…

【多线程】Thread 类 详解

Thread 类 详解 一. 创建线程1. 继承 Thread 类2. 实现 Runnable 接口3. 其他变形4. 多线程的优势-增加运行速度 二. Thread 类1. 构造方法2. 常见属性3. 启动线程-start()4. 中断线程-interrupt()5. 线程等待-join()6. 线程休眠-sleep()7. 获取当前线程引用 三. 线程的状态1. …

redis主从复制、哨兵、集群模式

redis群集有三种模式 redis群集有三种模式&#xff0c;分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cluster群集 ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制…

Shell命令管理进程

Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外&#xff0c;还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…

24、DAPlink仿真器-STM32F103C8T6

参考文章&#xff1a; A、https://oshwhub.com/nice0513/daplink-fang-zhen-qi B、https://oshwhub.com/Southerly/daplink-fang-zhen-qi-swd C、https://oshwhub.com/jixin002/stm32f103c8t6_cmsis-dap 串口烧录Hex文件 问题&#xff1a;不支持U盘拖拽&#xff0c;没有识别出U…

Java使用本地浏览器打开网页工具类分享

本文主要分享一个封装工具类&#xff0c;该工具类已实现查找本地可运行的浏览器打开网页。 package com;import java.lang.reflect.Method;/*** browse util** author Roc-xb*/ public class BrowseUtil {public static final String[] BROWSERS {"firefox", "…

UDP协议和报文格式,校验和,CRC的含义

&#x1f496;&#x1f496;&#x1f496;每日一看&#xff0c;学习动力 一、UDP协议及其报文格式 UDP&#xff1a;特点&#xff1a;无连接&#xff0c;不可靠传输 报头里面有啥呢&#xff1f; 那么首先我要先提问一下&#xff1f;2个字节&#xff0c;可以表示的数据范围有多大…

【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制

随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开…

C语言入门Day_17 循环的控制

目录 前言 1.break 2.continue 3.易错点 4.思维导图 前言 我们知道当循环判断的边界条件不成立以后&#xff0c;循环就结束了。除此以外&#xff0c;我们如果想要提前结束循环&#xff0c;或者在循环中跳过某一次循环代码的执行&#xff0c;应该怎么做呢&#xff1f; 假如…

数据治理-数据架构-企业数据架构

是什么 数据架构定义了对组织非常重要元素的标准术语和设计。企业数据架构的设计中包括业务数据描述&#xff0c;如数据的收集、存储、整合、移动和分布。 当数据在组织中通过源或者接口流动时&#xff0c;需要安全、集成、存储、记录、分类、共享的报表和分析&#xff0c;最终…

3D目标检测数据集 KITTI(标签格式解析、点云转图像、点云转BEV)

本文介绍在3D目标检测中&#xff0c;理解和使用KITTI 数据集&#xff0c;包括KITTI 的基本情况、下载数据集、标签格式解析、点云转图像、点云转BEV。 目录 1、KITTI数据集中3D框可视化的效果 2、先看个视频&#xff0c;了解KITTI 的基本情况 3、来到KITTI官网&#xff0c;下…

C++ 11:多线程相关问题

目录 一. 线程类thread 1.1 thread的一些接口函数 2.2 通过thread创建多线程 二. this_thread 三. 互斥锁与原子操作 3.1 多线程中的加锁与解锁 3.1.1 mutex类 3.1.2 lock_guard 类 3.3 原子性操作 四. 条件变量 4.1 线程互斥的缺陷 4.2 condition_variable 实现线程…

图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2

MAE (Masked Autoencoders Are Scalable Vision Learners) 来自Masked Autoencoders Are Scalable Vision Learners&#xff0c;Our loss function computes the mean squared error (MSE) between the reconstructed and original images in the pixel space. 几个关键点&…

无涯教程-JavaScript - IMSUB函数

描述 IMSUB函数以x yi或x yj文本格式返回两个复数的差。减去复数时,实数和虚数系数分别相减,即从复数a bi中减去复数c di的方程为- (a bi)-(c in)(a-c)(b-d)我 语法 IMSUB (inumber1, inumber2)争论 Argument描述Required/OptionalInumber1The complex number from …

【C++】可变参数模板

2023年9月9日&#xff0c;周六下午 这个还是挺难学的&#xff0c;我学了好几天... 在这里我会举大量的示例程序&#xff0c;这样可以有一个更好的理解&#xff0c; 不定期更新。 目录 推荐文章&#xff1a; 示例程序一&#xff1a;拼接字符串 示例程序二&#xff1a;求整…

Python散点图

散点图 散点图是指在回归分析中&#xff0c;数据点在直角坐标系平面上的分布图&#xff0c;散点图表示因变量随自变量而变化的大致趋势&#xff0c;据此可以选择合适的函数对数据点进行拟合。用两组数据构成多个坐标点&#xff0c;考察坐标点的分布&#xff0c;判断两变量之间…

基于Java+SpringBoot+Vue前后端分离农产品直卖平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

气膜建筑为什么被称为低碳环保建筑?

近年来&#xff0c;环保理念逐渐深入人心以及国家对于环境保护力度的加强&#xff0c;绿色建筑也得到了发展。其中&#xff0c;气膜建筑的建设更是进入了科技化、标准化与國际化发展时期&#xff0c;气膜建筑的使用能将建筑工程建设推向了一个新的高潮&#xff0c;使得公益性和…

业务架构图是什么?用什么软件制作比较好?

​一 业务架构图是什么&#xff1f; 1.1业务架构图简介 业务架构图是一种可视化表达方法&#xff0c;用于描述一个企业或产品的业务活动、流程、系统、数据和关系。它将业务流程、职能、数据流动以及系统之间的交互关系可视化&#xff0c;帮助人们更好地理解业务运作的全…

Claude 2,它有 GPT-4 一些无法超越的能力

文章目录 场景1&#xff1a;处理长文本场景2&#xff1a;上传文件场景3&#xff1a;进行冗长的多轮对话场景4&#xff1a;我的提示词里涉及2021年9月之后的信息 场景1&#xff1a;处理长文本 和 ChatGPT 相比&#xff0c;Claude 2 最大的优势就是它高达 10 万的 Token 数量。要…