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

13,627次阅读
没有评论

共计 1951 个字符,预计需要花费 5 分钟才能阅读完成。

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

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

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

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

子组件 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!'

        }

    }

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

父组件通过 @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_脚本之家

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

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-07发表,共计1951字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)