当前位置: 首页 > 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.mrgr.cn/news/79697.html

相关文章:

  • Vue框架入门
  • 解决前后端分离跨域产生的session丢失问题
  • 一个直接看央视频道的软件,可直接安装到TV
  • DMA代码部分
  • 计算机网络基础知识
  • 基于python+django+vue的购物商城系统
  • 雪花算法详解
  • 正则表达式的高级方法
  • STL之空间配置器allocator
  • 正则化:机器学习中的泛化利器
  • webrtc-java:引领Java进入实时通信新时代
  • 线上常见问题案例及排查工具
  • DevOps持续集成
  • STM32-C语言基础知识
  • 力扣HOT 100(图)
  • 多人聊天室 NIO模型实现
  • 1.1.Flink的项目初始化和Hello-world
  • 在Ubuntu22.04 jammy下用qemu模型riscv32环境装鸿蒙(未完成,待续)
  • PDF处理的创新工具:福昕低代码平台尝鲜
  • leecode中的面试100题