当前位置:首页 > 技术分析 > 正文内容

详细介绍一下Vue3中的 this.$emit 是什么?如何使用 this.$emit?

ruisui883周前 (04-08)技术分析12

在Vue中,子组件不能直接修改父组件的数据(Props 是单向数据流,父传子),但通过事件传递,子组件可以通知父组件某些变化。this.$emit就是实现这种通讯机制的关键。

this.$emit是Vue中实例的一个方法,用于在子组件中触发事件,向父组件发送数据。在Vue 3中,虽然整体架构有所变化,例如引入了Composition API,但this.$emit还是在基于选项的API依然使用,用来实现父子组件之间的事件传递。

它的主要作用是在子组件内部发出一个自定义事件,父组件可以通过监听该事件来获取子组件传递的数据,或者响应子组件的行为。

典型的使用流程

  • 第一步、在子组件中调用 this.$emit 发射事件。
  • 第二步、在父组件中监听该事件,接收子组件发出的数据或执行特定的逻辑。

this.$emit 的语法

this.$emit(eventName, [payload1, payload2, ...])
  • eventName:事件的名称,字符串类型,通常用小写字母加中划线的格式kebab-case。
  • payload:可选参数,事件附带的数据,可以是一个或多个值,父组件可以通过事件处理函数接收这些数据。

如何使用 this.$emit

子组件:发射事件

假设我们有一个子组件,子组件有一个按钮,当按钮被点击时,触发 this.$emit 来通知父组件按钮被点击了。




<script>
export default {
  methods: {
    handleClick() {
      // 通过 $emit 发射一个 'button-clicked' 事件,并传递数据给父组件
      this.$emit('button-clicked', '子组件点击了按钮');
    }
  }
}
</script>

父组件:监听子组件的事件

父组件通过监听 button-clicked 事件,接收子组件传递的消息。




<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleChildClick(message) {
      console.log(message); // 输出: "子组件点击了按钮"
    }
  }
}
</script>

在这个例子中,父组件监听了子组件发射的button-clicked事件,执行了handleChildClick函数,并接收了子组件通过$emit传递的消息 '子组件点击了按钮'。

总结

this.$emit是Vue中子组件向父组件传递信息的关键机制,主要用于在子组件中触发事件,并通过事件传递数据或通知父组件执行相应的操作。在Vue 3中,this.$emit仍然在基于选项的API 中被广泛使用,而在组合式API中则使用emit函数。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3347.html

标签: kebab-case
分享给朋友:

“详细介绍一下Vue3中的 this.$emit 是什么?如何使用 this.$emit?” 的相关文章

财务未来:数字化全流程自动化报销,让预算管理更轻松

财务管理是企业经营的重中之重,费控管理则是财务管理的核心之一。上至管理层下至普通员工,面对繁琐的费控管理却是“家家有本难念的经”。举个常见的例子:在传统企业的费用管理模式下,员工在进行商务活动时,通常需要自行垫资,之后再经过一系列繁杂的报销审批流程,才能最终实现打款。对于普通员工来说,申报流程繁琐,...

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别。小编认真整理了一些自己所知道的Vue和React的区别,给大家分享分享。1. 模板语法 vs JS...

Git分布式系统---Gitlab多人工作流程

前言在上一次推文中,我们已经很清楚的讲解了如何创建本地仓库、提交(push)项目到远程仓库以及从远程仓库clone(克隆)项目到本地的相关操作。大家可以先去看前面的推文(快速掌握Git分布式系统操作)点击查看目前无论你是否步入社会还是在校学生,都会使用Gitlab来进行团队的代码管理。(可以这样说:...

国产操作系统上Vim的详解03--安装和使用插件 | 统信 | 麒麟 | 中科方德

原文链接:国产操作系统上Vim的详解03--使用Vundle插件管理器来安装和使用插件 | 统信 | 麒麟 | 中科方德Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用Vundle插件管理器来安装和使用Vim插件的详解文章。Vundle是Vim的一款强大的插件管理器,可以帮助我们轻松地安...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

15款测试html5响应式的在线工具

手机、平板灯手持设备的增多,网站要顺应变化,就必须要做响应式开发,响应式网站最大的特点在于可以在不同设备下呈现不同的布局,是基于html5+css3技术,目前越来越多的网站开始采用了响应式设计,而下面15款工具可以方便测试你的html5响应式效果。Responsinatorhttp://www.re...