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

Vue中的this.$emit()方法详解【父子组件传值常用】

​在Vue中,this.$emit()方法用于触发自定义事件。它是Vue实例的一个方法,可以在组件内部使用。

使用this.$emit()方法,你可以向父组件发送自定义事件,并传递数据给父组件。父组件可以通过监听这个自定义事件来执行相应的逻辑。

下面是一个简单的示例,展示了如何在Vue组件中使用this.$emit()方法:项目文件夹下该组件定义路径 E:\myproject\src\components\ChildComponent\index.vue

子组件 index.vue

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<template>

    <button @click="handleButtonClick">点击触发事件</button>

</template>

<script>

export default {

    name:'ChildComponent',

    methods: {

        handleButtonClick() {

            // 触发自定义事件,并传递数据给父组件

            this.$emit('custom-event', 'Hello, World!');

        }

    }

}

</script>

在上面的示例中,当按钮被点击时,handleButtonClick方法会被调用。在该方法中,我们使用this.$emit()方法触发了一个名为custom-event的自定义事件,并传递了字符串’Hello, World!'作为数据。

父组件可以通过监听custom-event来接收这个自定义事件,并执行相应的逻辑。例如,在父组件中可以这样监听并处理这个事件:

父组件 table.vue

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<template>

    <el-row>

        <el-col :span="24">

            <el-card>

                <el-table...>

                        ...

                </el-table>

            </el-card>

        </el-col>

    <el-row>

    <div>

        <child-component @custom-event="handleCustomEvent"></child-component>

    </div>

</template>

// 在父组件中导入子组件

import ChildComponent from '@/components/ChildComponent'

<script>

export default {

    name: 'App',

    data() {

        return {

        }

    },

    // 注册子组件

    components: {

        ChildComponent

    },  

    methods: {

        handleCustomEvent(data) {

          // 处理自定义事件的逻辑

          console.log(data); // 输出:'Hello, World!'

        }

    }

父组件通过@custom-event监听了custom-event自定义事件,并在handleCustomEvent方法中处理了这个事件。当子组件中的this.$emit(‘custom-event’, ‘Hello, World!’)被触发时,父组件的handleCustomEvent方法会被调用,并且传递的数据’Hello, World!'会被打印出来。

注: 

通过在components选项中注册子组件,可以在父组件的模板中使用该子组件。在这个例子中,父组件可以通过以下方式在模板中使用ChildComponent:

1

2

3

4

5

<template>

  <div>

    <child-component></child-component>

  </div>

</template>

子组件在模板中使用时需要使用短横线命名法(kebab-case),而在组件定义中使用驼峰命名法(camelCase)。你可以在components选项中注册多个子组件,并在父组件的模板中使用它们。这样可以实现更好的代码组织和复用。

这就是使用this.$emit()方法在Vue中触发自定义事件的基本用法。

更多参考:

彻底明白VUE修饰符sync - 简书

Vue中的this.$emit()方法详解_vue.js_脚本之家

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 影刀上传文件api
  • 08:导数-导数的定义及几何意义
  • 《深度学习》OpenCV 计算机视觉入门 (上篇)
  • P(查准率) R(查全率) AP mAP最通俗准确的讲解
  • Django使用视图动态输出CSV以及PDF的操作详解例子解析
  • sheng的学习笔记-AI-生成式方法
  • 【PyQt6 应用程序】QTDesigner生成ui文件转成py源码并执行
  • 编译报错declaration may not appear after executable statement in block
  • 图数据库查询语言 cypher 与 memgraph
  • vscode附着调试
  • Day47 | 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长
  • openGuass——一般元命令
  • Vue JS执行机制和nextTick
  • Python算法工程师面试整理-微积分
  • SAP商业地产管理(RE-FX)
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Android交互
  • Apache的基本使用
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ERLANG 网工修炼笔记 ---- UDP
  • ES6系列(二)变量的解构赋值
  • ES6之路之模块详解
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel 中的一个后期静态绑定
  • node 版本过低
  • Promise初体验
  • vue学习系列(二)vue-cli
  • XForms - 更强大的Form
  • 从0实现一个tiny react(三)生命周期
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 消息队列系列二(IOT中消息队列的应用)
  • 新书推荐|Windows黑客编程技术详解
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 数据可视化之下发图实践
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #java学习笔记(面向对象)----(未完结)
  • #laravel 通过手动安装依赖PHPExcel#
  • (分布式缓存)Redis持久化
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Neo4j下载安装以及初次使用
  • (转)fock函数详解
  • ***原理与防范
  • .Net CF下精确的计时器
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Core 中间件验签
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET 依赖注入和配置系统
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [AIGC] HashMap的扩容与缩容:动态调整容量以提高性能