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

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

ruisui882个月前 (04-08)技术分析17

在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?” 的相关文章

Linux Lite 6.6发行版正式发布:添加简体中文及AI工具支持

IT之家 9 月 8 日消息,Linux Lite 是一个对新手友好的 Linux 发行版,它基于 Ubuntu LTS,并以 Xfce 桌面为特色,主要针对 Windows 用户而设计,也被认为是从 Windows 过渡到 Linux 的友好方案。目前 Linux Lite 6.6 版本已经正式发...

迁移GIT仓库并带有历史提交记录

迁移git仓库开发在很多时候,会遇到一个问题。GIT仓库的管理,特别是仓库的迁移。我需要保留已有的历史记录,而不是重新开发,重头再来。我们可以这样做:使用--mirror模式会把本地的分支都克隆。// 先用--bare克隆裸仓库 git clone git@gitee.com:xxx/testApp...

博信股份新战略后再推新品 TOPPERS E2耳机售价199元

中新网6月21日电 20日,博信股份在北京正式推出新品TOPPERS主动降噪耳机E2,这是博信股份继2月战略暨新品发布会后的第二次新品亮相。价格方面,TOPPERS主动降噪耳机E2零售价199元,并于6月20日下午4点在京东商城公开销售。据介绍,TOPPERS主动降噪耳机E2采用AMS(奥地利微电子...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

一文让你彻底搞懂 vue-Router

路由是网络工程里面的专业术语,就是通过互联把信息从源地址传输到目的地址的活动。本质上就是一种对应关系。分为前端路由和后端路由。后端路由:URL 的请求地址与服务器上的资源对应,根据不同的请求地址返回不同的资源。前端路由:在单页面应用中,根据用户触发的事件,改变URL在不刷新页面的前提下,改变显示内容...

VUE 技术栈

官网链接:https://cn.vuejs.org/什么是vue:渐进式JavaScript 框架vue-cli链接:https://cli.vuejs.org/vue-cli安装:npm install -g @vue/clivue -V创建一个项目:vue create xxxxxx模版语法:文...