vue3探索——使用ref与$parent实现父子组件间通信

在vue3中,可以使用vue3的API defineExpose()函数结合ref或者$parent,实现父子组件数据的传递。

子组件向父组件传递数据defineExpose()ref

  • 子组件:通过defineExpose() 函数,向外暴露响应式数据或者方法
// src/components/son.vue
<template><div><h1>儿子有 ${{ son_money }}</h1></div>
</template><script setup lang="ts">
import { ref } from 'vue';// 1-定义子组件内部的响应式数据
const son_money = ref(500);// 2-定义子组件内部的方法
function queryMoney() {alert('儿子还有 $' + son_money.value);
}// 3-重点:把子组件中的数据或者方法暴露出去
defineExpose({son_money,queryMoney
});
</script>
  • 父组件:通过ref获取子组件实例,进而获取子组件暴露的响应式数据或方法
// src/App.vue
<template><div><h1>父组件</h1><button @click="querySon">看看儿子有多少钱</button><button @click="giveSon">给儿子打50块钱</button><hr><!-- 2-使用子组件 --><Son ref="son" /></div>
</template><script setup lang="ts">
import { ref } from 'vue';
// 1-引入子组件
import Son from './components/son.vue';// 3-获取子组件的实例
const son = ref();function querySon() {// 4-重点:调用子组件暴露的 queryMoney()方法son.value.queryMoney();
}function giveSon() {// 5-重点:查改子组件暴露的数据 son_moneyson.value.son_money += 50;
}
</script>

你没看错!这里的ref就是经常用来定义响应式数据的那个ref ,所以在script 标签中使用,需要带上.value

ref 的两个作用:

  • 定义响应式数据
  • 获取子组件实例

父组件向子组件传递数据defineExpose()$parent

  • 父组件:通过defineExpose() 函数,向外暴露响应式数据或者方法
// src/App.vue
<template><div><h1>父组件有 ${{ money }}</h1><hr><!-- 2-使用子组件 --><Daughter /></div>
</template> <script setup lang="ts">
import { ref } from 'vue';// 1-引入子组件
import Daughter from './components/daughter.vue';// 3-定义父组件响应式数据
const money = ref(1000);// 4-定义父组件里的方法
function borrowMoney() {money.value -= 100;return 100;
}// 5-重点:暴露父组件的数据和方法
defineExpose({money,borrowMoney
});
</script>
  • 子组件:通过监听事件和$parent ,获取父组件向外暴露的响应式数据或者方法
<template><div><h1>我是子组件,我有 ${{ dau_money }}</h1><!-- 1-重点:通过事件接收 $parent --><button @click="borrow($parent)">向父组件借100块</button></div>
</template><script setup lang="ts">
import { ref } from 'vue';// 定义子组件响应式数据
const dau_money = ref(0);// 2-重点:通过$parent,拿到父组件暴露的数据与方法
function borrow($parent: any) {// $parent 里就有父组件暴露的 money属性 和 borrowMoney()方法// console.log($parent); // 3-重点:调用父组件暴露的 borrowMoney()方法dau_money.value += $parent.borrowMoney();// 4-重点:可以查改父组件暴露的数据 moneyconsole.log('父组件还有 $' + $parent.money);
}
</script>

参考其他通讯方式:

vue3探索——使用ref与$parent实现父子组件间通信 - 前端cry - 博客园

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

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

相关文章

Opencv图片的旋转和图片的模板匹配

图片的旋转和图片的模板匹配 目录 图片的旋转和图片的模板匹配1 图片的旋转1.1 numpy旋转1.1.1 函数1.1.2 测试 1.2 opencv旋转1.2.1 函数1.2.2 测试 2 图片的模板匹配2.1 函数2.2 实际测试 1 图片的旋转 1.1 numpy旋转 1.1.1 函数 np.rot90(kl,k1)&#xff0c;k1逆时针旋转9…

重温设计模式--13、策略模式

策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来&#xff0c;使得算法可以独立于使用它的客户端而变化&#xff0c;提高了代码的灵活性和可维护性。 其主要包含以下几个…

计算机基础知识复习1.5

标记-清除算法&#xff1a;标记-清除分为标记 和清除 两个阶段&#xff0c;首先通过可达性分析&#xff0c;标记出所有需要回收的对象&#xff0c;然后统一回收所有被标记的对象。 复制算法&#xff1a;为了解决碎片空间的问题&#xff0c;出现了复制算法 将内存分成两块&…

SQL Server 中的覆盖索引

1. 覆盖索引的工作原理 当查询只涉及索引中已经包含的列时&#xff0c;SQL Server 可以直接使用索引来返回查询结果&#xff0c;而不需要回表到数据页去检索实际的数据行。覆盖索引因此能够显著减少 I/O 操作&#xff0c;提高查询效率。 例如&#xff0c;假设有一个表 Employ…

Golang开发-案例整理汇总

前言 CSDN的文章缺少一个索引所有文章分类的地方,所以手动创建这么一个文章汇总的地方,方便查找。Golang开发经典案例汇总 GoangWeb开发 GolangWeb开发- net/http模块 GolangWeb开发-好用的HTTP客户端httplib(beego) GolangWeb开发- Gin不使用Nginx部署Vue项目 Golang并发开…

交叉编译的核心原理与核心概念

什么是交叉编译&#xff1f; 交叉编译&#xff08;Cross Compilation&#xff09;是一种在一种计算机体系结构或操作系统&#xff08;主机&#xff0c;Host&#xff09;上生成另一种计算机体系结构或操作系统&#xff08;目标&#xff0c;Target&#xff09;上的可执行文件的过…

vue-codemirror定位光标位置并在光标处插入信息

业务场景:在代码编辑器外点击按钮,向代码编辑器内的光标处新增一条拼接好的信息。 getCursor方法: 官方文档: doc.getCursor(?start: string) → {line, ch} Retrieve one end of the primary selection. start is an optional string indicating which end of the select…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度图学习在分布偏移下的综述&#xff1a;从图的分布外泛化到自适应 Northwestern University, USA Repository Abstract 图上的分布变化——训练和使用图机器学习模型之间的数据分布差异——在现实世界中普遍存在&#xff0c;并且通常不可避免。这些变化可能会严重恶化模…

『SQLite』解释执行(Explain)

摘要&#xff1a;本节主要讲解SQL的解释执行&#xff1a;Explain。 在 sqlite 语句之前&#xff0c;可以使用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语&#xff0c;用于描述表查询的细节。 基本语法 EXPLAIN 语法&#xff1a; EXPLAIN [SQLite Query]EXPLAIN QUER…

(一)使用 WebGL 绘制一个简单的点和原理解析

使用 WebGL 绘制一个简单的点&#xff0c;我们需要通过 WebGL 的管线来进行一系列的步骤。以下是实现的详细步骤和原理解析&#xff1a; WebGL 绘制点的基本步骤 初始化 WebGL 上下文 首先&#xff0c;我们需要获取 WebGL 上下文&#xff0c;这样才能进行所有的绘图操作。通常…

Vue路由跳转报错

说明&#xff1a;使用 Vue 的router.replace/push&#xff0c;若跳转到当前路由&#xff0c;控制台会报错如下&#xff1a;NavigationDuplicated: Avoided redundant navigation to current location 原因&#xff1a;Vue-router在3.1之后把$router.push()方法改为了Promise。所…

【Axure高保真原型】环形进度条(开始暂停效果)

今天和大家分享环形进度条&#xff08;开始暂停效果&#xff09;的原型模版&#xff0c;效果包括&#xff1a; 点击开始按钮&#xff0c;可以环形进度条开始读取&#xff0c;中部百分比显示环形的读取进度&#xff1b; 在读取过程中&#xff0c;点击暂停按钮&#xff0c;可以随…

Euler 21.10(华为欧拉)安装oracle19c-RAC

1. Euler 21.10安装oracle19c-RAC 1.1. 环境规划 1.1.1. 主机规划 hostname IP 实例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系统版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

【python】matplotlib(radar chart)

文章目录 1、功能描述和原理介绍2、代码实现3、效果展示4、完整代码5、多个雷达图绘制在一张图上6、参考 1、功能描述和原理介绍 基于 matplotlib 实现雷达图的绘制 一、雷达图的基本概念 雷达图&#xff08;Radar Chart&#xff09;&#xff0c;也被称为蛛网图或星型图&…

(三)通过WebGL绘制一个简单的三角形来理解渲染管线

理解 WebGL 绘图原理的关键是了解它的渲染管线。WebGL 渲染管线实际上是由多个阶段组成的&#xff0c;每个阶段都有特定的任务&#xff0c;最终输出的是屏幕上的图像。为了让你能轻松理解这些原理&#xff0c;我将通过一个简单的例子来详细解释。 绘制一个简单的三角形 我们将…

【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)

大家好&#xff0c;我是摇光~ 在运行 Shell 脚本时&#xff0c;遇到 bash: bad file descriptor 错误通常意味着脚本尝试对一个无效或不可用的文件描述符&#xff08;file descriptor&#xff09;执行了读写操作。 以下是一些可能导致这个问题的原因、详细案例以及相应的解决…

Kafka3.x KRaft 模式 (没有zookeeper) 常用命令

版本号&#xff1a;kafka_2.12-3.7.0 说明&#xff1a;如有多个地址&#xff0c;用逗号分隔 创建主题 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic demo --partitions 1 --replication-factor 1删除主题 bin/kafka-topics.sh --delete --boots…

Business Cooperation Process

Business Cooperation Process 商务合作基本流程 并不是每个人都能做到言而有信的&#xff0c;因此还是需要流程来约束的。

模式识别-Ch2-分类错误率

分类错误率 最小错误率贝叶斯决策 样本 x x x的错误率&#xff1a; 任一决策都可能会有错误。 P ( error ∣ x ) { P ( w 2 ∣ x ) , if we decide x as w 1 P ( w 1 ∣ x ) , if we decide x as w 2 P(\text{error}|\mathbf{x})\begin{cases} P(w_2|\mathbf{x}), &…

Milvus×全诊通:从导诊到智能超声,如何将人效比翻倍

AI与智慧医疗的结合已是未来发展的必然趋势。近年来&#xff0c;国家卫健委推崇智慧医疗和AI技术&#xff0c;如智能导诊、预问诊、辅助诊断等&#xff0c;以提高医疗服务效率和诊断准确性&#xff0c;改善患者就医体验。 全诊通是一家专注于医疗SaaS和人工智能的公司&#xff…