Vue3 + JavaScript 父组件点击按钮触发子组件事件方法

在 Vue 3 中,父组件点击按钮触发子组件事件有以下三种常用方式:

方法 1:使用 ref 直接调用子组件方法(推荐)

vue

复制

下载

<!-- 父组件 -->
<template><button @click="callChildMethod">父组件按钮</button><ChildComponent ref="childRef" />
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const childRef = ref(null);function callChildMethod() {if (childRef.value) {childRef.value.childMethod(); // 直接调用子组件方法}
}
</script>

vue

复制

下载

<!-- 子组件 ChildComponent.vue -->
<script setup>
// 暴露给父组件的方法
const childMethod = () => {console.log('子组件方法被调用');// 执行子组件逻辑
};// 暴露方法给父组件
defineExpose({childMethod
});
</script>

方法 2:通过 Props 传递回调函数

vue

复制

下载

<!-- 父组件 -->
<template><button @click="triggerChild">父组件按钮</button><ChildComponent :parentCallback="callback" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';const callback = () => {console.log('父组件的回调函数被执行');
};function triggerChild() {// 通过触发子组件事件间接执行// 实际执行逻辑在子组件内
}
</script>

vue

复制

下载

<!-- 子组件 -->
<template><!-- 接收父组件传递的回调 -->
</template><script setup>
const props = defineProps(['parentCallback']);// 子组件内执行回调
function executeParentCallback() {if (props.parentCallback) {props.parentCallback();}
}// 暴露方法供父组件调用
defineExpose({ executeParentCallback });
</script>

方法 3:使用自定义事件(子组件触发)

vue

复制

下载

<!-- 父组件 -->
<template><button @click="emitEvent">父组件按钮</button><ChildComponent @child-event="handleEvent" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';function emitEvent() {// 触发自定义事件(实际由子组件监听)
}function handleEvent(data) {console.log('收到子组件事件:', data);
}
</script>

vue

复制

下载

<!-- 子组件 -->
<script setup>
const emit = defineEmits(['child-event']);// 当需要执行时触发事件
function triggerEvent() {emit('child-event', { data: '子组件数据' });
}defineExpose({ triggerEvent });
</script>

推荐方案对比

方法优点适用场景
ref 直接调用直接高效,逻辑清晰父组件直接控制子组件特定操作
Props 回调函数符合单向数据流需要传递数据到父组件的情况
自定义事件符合组件解耦原则子组件主动通知父组件的场景

最佳实践建议

  1. 需要直接控制子组件行为时 → 使用 ref 方法

  2. 需要子组件返回数据时 → 使用 Props 回调

  3. 实现组件解耦时 → 使用自定义事件

根据你的具体场景选择最合适的方式,通常 ref 直调是最直接高效的解决方案。

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

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

相关文章

超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 @Docker

InfiniSynapse 通过自研的第二代LLM-Native RAG实现了企业业务的理解&#xff0c;精准的Schema召回保证数据的准确性。提供专门为大模型优化的InfiniSQL语言&#xff0c;从而可以更加准确的生成查询语句&#xff0c;通过 InfiniSQL 引擎让人类第一次对存储在各种数据源的全模态…

解决国内无法加载谷歌验证码(reCAPTCHA):URL 重定向配置指南

解决国内无法加载谷歌验证码&#xff08;reCAPTCHA&#xff09;&#xff1a;URL 重定向配置指南 在搭建网站或使用某些应用时&#xff0c;经常会遇到需要调用谷歌验证&#xff08;reCAPTCHA&#xff09;API 的情况。然而&#xff0c;由于网络环境的特殊性&#xff0c;国内多数…

【Qt】如何使用QtInstallerFramework打包Qt程序

使用 Qt Installer Framework 可以将你的 Qt 程序打包成一个带有安装向导的安装包&#xff0c;适用于 Windows、Linux 和 macOS 平台。以下是完整的打包流程&#xff0c;以你当前开发的 ecgexport 应用为例。 &#x1f9f0; 一、准备工作 1. 安装 Qt Installer Framework 下载…

如何编写高效的Prompt:从入门到精通

在人工智能时代&#xff0c;特别是随着大型语言模型(LLM)如ChatGPT、Claude等的普及&#xff0c;编写高质量的Prompt(提示词)已成为一项关键技能。一个好的Prompt可以显著提高AI输出的质量和相关性&#xff0c;而一个糟糕的Prompt可能导致无用甚至误导性的结果。本文将带你深入…

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…

【机械视觉】Halcon—【十三、实例找各个区域面积和中心点】

找区域面积和中心点 *获取图像 read_image (Image, fabrik) *关闭窗口 dev_close_window () *打开窗口 dev_open_window (0, 0, 512, 512, black, WindowID) *设置输出字体&#xff0c;14号字&#xff0c;Courier字体&#xff0c;粗体 set_display_font (WindowID, 14, mono, …

MongoDB 基础

一、MongoDB 基础概念 1. 什么是 MongoDB MongoDB 是一个文档型数据库&#xff0c;数据以类似 JSON 的文档形式存储&#xff0c;使用 BSON 格式。设计理念是应对大数据量1、高性能和灵活性需求。数据组织方式&#xff1a;数据库→2集合→文档&#xff0c;其中集合类似于关系型…

RNN:从记忆困境到序列建模革命

在自然语言处理的战场上&#xff0c;一个句子中的每个单词都承载着前文的记忆。当传统神经网络面对这种时序依赖束手无策时&#xff0c;循环神经网络&#xff08;RNN&#xff09; 以独特的循环结构开启了序列建模的新纪元。它像人类阅读般记忆上下文&#xff0c;却也因记忆衰减…

阳台光伏配套电表ADL200N-CT/D16-Wf-1

安科瑞 华楠 18706163979 引言 在“双碳”目标推动下&#xff0c;绿色能源正逐步走进日常生活。阳台光伏作为一种新型分布式发电方式&#xff0c;凭借灵活安装、高效节能的特点&#xff0c;成为城市家庭和工商业用户的新选择。安科瑞推出的ADL200N-CT/D16-Wf-1阳光光伏电表&a…

功能测试—软件的生命周期

市场需求调研 可行性研究 从企业的人力储备、技术储备、资金储备等方面出发&#xff0c;论证经济效益或者社会效益能否达到预期 项目立项 需求开发 输出&#xff1a;需求规格说明书需求评审&#xff08;需求测试&#xff09;&#xff1a;测试&#xff08;测试负责人、资深测…

PostgreSQL 日常维护

目录 前言 基本使用 1. 登录数据库 2. 数据库操作 2.1 列出库 2.2 创建库 2.3 删除库 2.4 切换库 2.5 查看库大小 3. 数据表操作 3.1 列出表 3.2 创建表 3.3 复制表 3.4 删除表 3.5 查看表结构 4. 模式操作命令 4.1 创建模式 4.2 默认模式 4.3 删除模式 4.4…

STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读

STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读 前言小贴士 通用定时器原理定时器的内部时钟源通用定时器TIM9-TIM14的对比共同点区别 TIM9-TIM14功能说明时基单元计数模式时钟选择 定时器框图理解和分析TIM10/TIM11/TIM13/TIM14输入捕获输出比较 TIM9和TIM12独立通道输入…

whttpserver:一个命令极速搭建文件上传与下载服务器

whttpserver 是一个简单的HTTP服务器&#xff0c;类似于python -m http.server&#xff0c;但增加了文件上传和编辑的功能。 1. 安装 whttpserver 模块 # 临时设置环境变量 PYTHONUTF81&#xff0c;强制 Python 使用 UTF-8 编码 set PYTHONUTF81 pip install whttpserver 2.…

【0.2 漫画操作系统原理】

🖥️ 漫画操作系统原理 🎯 学习目标:深入理解操作系统核心原理,为Java并发编程和性能优化打下坚实基础 🎪 第一章:操作系统初识篇 🤔 什么是操作系统? 想象一下,你是一个大型图书馆的馆长… 📚 没有操作系统 vs 有操作系统没有操作系统: 读者1 → 直接找书架…

第1章 C# 和 .NET 框架 笔记

第1章 C# 和 .NET 框架 1.1 在 .NET 之前 C#为在.NET框架上开发程序而设计的编程语言。 MFC&#xff08;Microsoft Foundation Class&#xff0c;微软基础类库&#xff09; 微软公司提供的一个类库&#xff0c;以 C 类的形式封装了 Windows 的 API&#xff0c;并包含一个应…

Django全栈开发实战与架构思考

一、框架选型与开发范式 作为Python生态最成熟的Web框架&#xff0c;Django的"电池全包"理念在2.3版本后得到更彻底的贯彻。项目初期通过django-admin startproject生成的脚手架已包含&#xff1a; 自动化ORM迁移系统 内置Admin后台管理界面 基于WSGI的中间件管道…

微服务--Gateway网关

1. Gateway简介 Gateway网关是微服务架构中不可或缺的组件&#xff0c;是微服务架构中的统一入口&#xff0c;它作为所有客户端请求的第一道防线&#xff0c;负责请求的路由、过滤和聚合。 Gateway核心功能 路由(Routing) 根据请求路径、Header、参数等将请求路由到不同微服…

区块链与人工智能的融合:从信任到智能的IT新引擎

在信息技术&#xff08;IT&#xff09;的飞速发展中&#xff0c;两大颠覆性技术的交汇正掀起一场革命——区块链与人工智能&#xff08;AI&#xff09;的融合。2025年&#xff0c;随着数据隐私需求的激增、去中心化应用的爆发以及企业对可信智能系统的追求&#xff0c;区块链与…

Javascript什么是原型和原型链,八股文

原型:函数都有prototype属性,称之为原型&#xff0c;也称为原型对象 原型可以放一些属性和方法&#xff0c;共享给实例对象使用 原型可以做继承 原型链:对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的原型对象,这样一层一…

生日悖论理论及在哈希函数碰撞中的应用

目录 一、生日悖论&#xff08;Birthday Paradox&#xff09;介绍 二、生日悖论的数学解释 &#xff08;一&#xff09;计算所有人生日都不同的概率 数学推导 示例计算 &#xff08;二&#xff09;至少有两个人生日相同的概率 三、哈希函数碰撞与生日悖论的关系思考 &a…