实例介绍Vue通过$emit方法实现子父组件通信

本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于$emit的相关问题,在子组件中通过$emit来调用父组件中的方法实现,下面一起来看一下,希望对大家有帮助。

实例介绍Vue通过$emit方法实现子父组件通信

【相关推荐:vue、vue】

Vue可以通过props属性,将参数从父组件传递给子组件,相对而言是比较简单的。

如果是想从子组件传递参数到父组件的话,得借助父组件的方法,同时在子组件中通过$emit来调用父组件中的方法实现。

立即学习“前端免费学习笔记(深入)”;

接下来具体演示下。

 场景

同样情况,父组件是新闻列表组件,子组件是新闻内容组件。在子组件中点击删除按钮,可以将删除的新闻信息传递给父组件,从而实现新闻列表的更新。

父组件开发

父组件用来显示新闻列表,代码如下:

  
import NewsContent from '@/components/NewsContent.vue';export default { name: "MyCounter", data() { return { list: [ { title: "今天天气不错", author: "张三" }, { title: "今天下雨了", author: "李四" } ] } }, components: { NewsContent }, methods: { removeNews(news) { for (let i = 0; i < this.list.length; i++) { if (this.list[i].title == news.title && this.list[i].author == news.author) { this.list.splice(i, 1); break; } } } }}

登录后复制

有几个需要注意的点:

在父组件中注册了子组件NewsContent

在父组件中定义了删除新闻的方法,当传递的新闻标题与作者均匹配时,则从新闻列表list中删除对应的新闻。

通过:news=”item”,将父组件的参数传递给子组件。

通过@removeNews=”removeNews”,将父组件的方法传递给子组件,注意子组件就是通过该方法来调用父组件方法并传参的。

 子组件开发

子组件通过$emit调用父组件传递过来的removeNews方法,代码如下:

  

新闻标题:{{news.title}}--新闻作者:{{news.author}}

export default { name: "MyCounter", props: ['news'], mounted() { console.log(this.news); }, methods: { btnDelete(news) { this.$emit("removeNews", news); } }}

登录后复制

注意,当点击新闻后面的删除按钮时,触发btnDelete方法,而btnDelete方法内容为this.$emit(“removeNews”, news);,即调用了父组件的removeNews方法,且传递参数news。

所以点击子组件删除按钮后,父组件中对应的新闻被删除。

子组件调用父组件的方法,来实现子父组件通信。父组件需要先将方法传递给子组件,子组件在通过$emit调用传递的方法,并不算很复杂。

02.png

1.props和$attrs具有数据的单向性,只能由父组件向子组件传递数据,不具备子传父的功能。

2.在vue中,我们可以使用自定义事件实现子组件向父组件传递数据。

自定义事件

1.在子组件上使用v-on指令绑定自定义事件

getChildData(data){//data是子组件触发事件传递的参数console.log('child data is' +data)}

登录后复制

2.事件的名称推荐使用-分割

$emit触发事件

1.每一个组件实例都要$emit方法用来触发自定义事件。

2.$emit(fn,arg)接受两个参数

(1)第一个参数是触发的事件名称,注意必须和定义的事件名完全相同。

(2)第二个参数是向父组件传递的数据。在父组件中就是定义的事件函数的第一个参数。

this.$emit('get-child-data','hello father')

登录后复制

【相关推荐:vue、vue】

以上就是实例介绍Vue通过$emit方法实现子父组件通信的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3231672.html

(0)
上一篇 2025年4月1日 16:59:19
下一篇 2025年3月3日 22:10:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 深入了解Vue计算属性computed的使用

    计算属性是 vue 组件的一个重要内容,下面本篇文章就来带大家了解一下vue computed属性,聊聊计算属性computed的使用方法,希望对大家有所帮助! Vue中的computed属性称为计算属性。在这一节中,我们学习Vue中的计算…

    2025年4月1日
    100
  • Vue详解之增加组件扩展性的slot

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了增加组件扩展性的slot的相关问题,组件的插槽也是为了让我们封装的组件更加具有扩展性,让使用者可以决定组件内部的一些内容到底展示什么,下面一起来看一下,希望对大家有帮助。 【相关推荐:…

    2025年4月1日
    100
  • Vue中slot使用解析之具名插槽与作用域插槽

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于具名插槽与作用域插槽的使用相关问题,插槽就是子组件中的提供给父组件使用的一个占位符,插槽包括默认插槽、具名插槽和作用域插槽,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue…

    2025年4月1日
    100
  • 聊聊vue生命周期钩子函数有哪些以及什么时候触发

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了vue生命周期钩子函数有哪些,分别什么时候触发,vue生命周期即为一个组件从出生到死亡的一个完整周期,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue、vue】 vue生命周期…

    2025年4月1日
    100
  • Vue计算属性computed可以做什么?应用场景浅析

    vue计算属性computed可以做什么?又能应用于什么场景呢?下面本篇文章就来带大家了解一下vue computed属性,并将其与methods、watch对比一下,希望对大家有所帮助! Vue中的计算属性是所有属性的计算,而这些计算都是…

    2025年4月1日
    100
  • 简析vue子路由参数传递与接收

    本篇文章给大家介绍有关vue路由:子路由,路由中参数的传递,希望对大家有帮助! 1.在idea中新建vue项目 2.main.js中修改 import Vue from ‘vue’// import Router from ‘./Route…

    2025年4月1日
    100
  • Vue实例的生命周期详解之从创建到销毁全过程

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于vue实例的生命周期从创建到销毁的全过程,生命周期是每个vue实例在被创建时都要经过一系列的初始化过程,下面一起来看一下,希望对大家有帮助。 【相关推荐:vue、vue】 Vue的…

    2025年4月1日
    100
  • 实例详解Vue中的事件修饰符

    事件修饰符 在Vue中,事件修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理。(学习视频分享:vue视频教程) 在Vue中事件修饰符主要有: .stop:等同于JavaS…

    2025年4月1日 编程技术
    100
  • vue组件各个生命周期的职责一览!

    vue中组件的生命周期,每个生命周期做了什么,应该在这个生命周期做什么? 【相关推荐:vue.js视频教程】 要掌握每个生命周期什么时候被调用 1.beforeCreate 在实例初始化之后,数据观测(data observer) 之前被调…

    编程技术 2025年4月1日
    100
  • 详细介绍ElementUI组件库

    本篇文章给大家带来了关于vue的相关知识,其中主要介绍了关于elementui组件库的相关问题,elementui组件库是一套基于vue2.0的桌面端组件库,提供了丰富的组件帮助开发人员快速构建页面,下面一起来看一下,希望对大家有帮助。 【…

    2025年4月1日
    100

发表回复

登录后才能评论