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

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

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

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

基于archlinux的发行版有哪些?

Arch Linux 是一个 Linux 发行版,采用滚动更新的模型,这意味着 Arch Linux 不会定期发布新版本,而是持续接收更新和升级,保持系统与最新软件版本的同步。Arch Linux 以其极简主义、简单性和用户定制为中心的特点而闻名,专注于让用户对其系统配置具有完全控制权。然而,它也以...

【Vue3 基础】05.组件化

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 api 和声明式渲染,处理了 DOM 的更新,但光是这些,对于一些复杂的需要手动操作 DOM 的情况,...

vue中如何在自定义组件上使用v-model和.sync

自定义事件tips推荐始终使用 kebab-case 的事件名。(v-on会将事件名自动转换为小写,避免匹配不到)changeData ×change-data √自定义组件的v-model用法:父组件定义数据源(不需要定义修改数据的方法),在子组件标签上通过v-model="data...

抖音 Android 性能优化系列:启动优化实践

启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

摄影后期必看 | PS插件camera raw 16.4教程 | 范围蒙版

范围蒙版Camera Raw 【蒙版】模块中提供了三个范围蒙版工具,可以通过特定的范围来创建蒙版。此次新增的【范围蒙版】大大加强了acr插件对局部调整的能力。点击下拉小箭头可以看到【颜色范围】,可用于快速选择想要编辑的颜色。快捷键:Shift + C【明亮度范围】,可用于快速选择想要调整的明亮度。快...