当前位置: 首页 > news >正文

vue中父组件接收子组件的多个参数的方法:$emit或事件总线

方法一:使用 $emit 方法

原理

子组件通过 $emit 方法向父组件发送事件,同时可以传递多个参数,父组件通过事件监听来接收这些参数。

示例

子组件代码

<template><div><button @click="sendData">发送数据</button></div>
</template><script>
export default {methods: {sendData() {// 通过 $emit 发送多个参数this.$emit("send-data", "参数1", { key: "参数2" }, [1, 2, 3]);},},
};
</script>

父组件代码

<template><div><ChildComponent @send-data="handleData" /></div>
</template><script>
import ChildComponent from "./ChildComponent.vue";export default {components: {ChildComponent,},methods: {handleData(param1, param2, param3) {console.log("接收到的参数1:", param1);console.log("接收到的参数2:", param2);console.log("接收到的参数3:", param3);},},
};
</script>

方法二:使用事件总线(Event Bus)

原理

事件总线是一个 Vue 实例,用于在非父子组件之间传递数据。通过 o n 监 听 事 件 , on 监听事件, onemit 触发事件。

步骤

创建一个事件总线实例(通常是在独立的文件中)。
子组件通过事件总线发送事件和数据。
父组件通过事件总线接收事件和数据。

示例

创建事件总线(eventBus.js)

import Vue from "vue";
export const EventBus = new Vue();

子组件代码

<template><div><button @click="sendData">通过事件总线发送数据</button></div>
</template><script>
import { EventBus } from "./eventBus";export default {methods: {sendData() {// 通过 EventBus 发送事件和多个参数EventBus.$emit("data-from-child", "参数1", { key: "参数2" }, [1, 2, 3]);},},
};
</script>

父组件代码

<template><div><p>父组件监听事件总线</p></div>
</template><script>
import { EventBus } from "./eventBus";export default {created() {// 监听事件总线中的事件EventBus.$on("data-from-child", this.handleData);},methods: {handleData(param1, param2, param3) {console.log("接收到的参数1:", param1);console.log("接收到的参数2:", param2);console.log("接收到的参数3:", param3);},},beforeDestroy() {// 避免内存泄漏,销毁事件监听EventBus.$off("data-from-child", this.handleData);},
};
</script>
http://www.lryc.cn/news/501138.html

相关文章:

  • 2024.12.10——攻防世界Web_php_include
  • 【机器学习算法】——数据可视化
  • 如何在 Android 项目中实现跨库传值
  • JavaCV之FFmpegFrameFilter视频转灰度
  • Redis:基于PubSub(发布/订阅)、Stream流实现消息队列
  • C#飞行棋(新手简洁版)
  • 【OpenCV】图像转换
  • 力扣 重排链表-143
  • 【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)
  • Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令
  • 爬虫基础之Web网页基础
  • k8s, deployment
  • 使用ensp搭建OSPF+BGP和静态路由,底层PC使用dhcp,实现PC互通
  • TÜLU 3: Pushing Frontiers in Open Language Model Post-Training
  • 深入解读 MySQL EXPLAIN 与索引优化实践
  • Flume——进阶(agent特性+三种结构:串联,多路复用,聚合)
  • ragflow连ollama时出现的Bug
  • 基于centos7.7编译Redis6.0
  • uni-app项目无法在Android Studio模拟器上运行
  • 第一部分:Linux系统(基础及命令)
  • No module named ‘_ssl‘ No module named ‘_ctypes‘
  • 【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题
  • VTK编程指南<六>:VTK可视化管线与渲染详解
  • 基于STM32的智能计步器
  • VB.NET 从入门到精通:开启编程进阶之路
  • 射频电路屏蔽简略
  • 基础算法——搜索与图论
  • redis优化编码之字符串
  • Python特定版本的安装/卸载/环境配置,Spyder安装教程
  • 全局搜索正则表达式(grep)