Vue2.x中的父子组件相互通信的实现方法

发布时间 - 2026-01-11 00:55:23    点击率:

业务场景:(这里指的是直接父子级关系的通信)

  • |美女|(子组件)将消息发送给大群(父组件)
  • 大群(父组件)收到|美女|发送的消息后再回个信息给|美女|(子组件)

父组件

template

<template>
  <div>
    <p>群消息girl:</p>
    <div>
      {{ somebody }} 说: 我 {{ age }} 了。
    </div>
    <hr>
    <v-girl-group 
        :girls="aGirls" 
        :noticeGirl="noticeGirl"
        @introduce="introduceSelf"></v-girl-group>
  </div>
</template>

注意的点:

  • 这里在父组件使用v-on来监听子组件上的自定义事件($emit的变化),一旦发生变化noticeGirl方法就会触发
<script>
import vGirlGroup from './GirlGroup'
export default {
  name: 'girl',
  components: {
    vGirlGroup
  },
  data () {
    return {
      aGirls:[{
        name:'小丽',
        age:22
      },{
        name:'小美',
        age:21
      },{
        name:'小荷',
        age:24
      }],
      somebody:'',
      age:'',
      noticeGirl:''
    }
  },
  methods: {
    introduceSelf (opt) {
      this.somebody = opt.name;
      this.age = opt.age;
      // 通知girl收到消息
      this.noticeGirl = opt.name + ',已收到消息';
    }
  }
}
</script>

注意的点:

这里methods中定义的方法introduceSelf就是父组件接收到子组件发出的$emit的事件处理程序

子组件

template

<template>
  <div>
    <ul>
      <li v-for="(value, index) in girls">
        {{ index }} - {{ value.name }} - {{ value.age }} 
        <button @click="noticeGroup(value.name,value.age)">发送消息</button>
      </li> 
    </ul>
    <div>接收来自大群的消息:{{ noticeGirl }}</div>
  </div>
</template>

script

<script>
export default {
  name: 'girl-group',
  props: {
    girls: {
      type: Array,
      required: true
    },
    noticeGirl: {
      type: String,
      required: false
    }
  },
  methods: {
    noticeGroup (name, age) {
      this.$emit('introduce',{
        name: name,
        age: age
      })
    }
  }
}
</script>

注意的点:

子组件使用$emit发出自定义事件

相比于Vue1.x的变化:

$dispatch 和 $broadcast 已经被弃用

*官方推荐的通信方式

首选使用Vuex

使用事件总线:eventBus,允许组件自由交流

具体可见:https://cn.vuejs.org/v2/guide/migration.html#dispatch-和-broadcast-替换

结果

以上所述是小编给大家介绍的Vue2.x中的父子组件相互通信,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# vue父子组件通信  # vue2.0父子组件通信  # vue2.0父子组件及非父子组件之间的通信方法  # vue2.0父子组件间通信的实现方法  # 详解Vue2中组件间通信的解决全方案  # Vue2.0学习之详解Vue 组件及父子组件通信  # Vue2.0实现组件之间数据交互和通信操作示例  # Vue2中如何使用全局事件总线实现任意组件间通信  # 大群  # 自定义  # 小编  # 就会  # 在此  # 给大家  # 指的是  # 所述  # 给我留言  # 感谢大家  # 再回  # 小美  # 小丽  # 疑问请  # 有任何  # 发送消息  # 发送给  # noticeGirl  # girls  # introduce 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 移动端脚本框架Hammer.js  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何在建站之星绑定自定义域名?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel如何创建自定义Artisan命令?(代码示例)  香港服务器网站卡顿?如何解决网络延迟与负载问题?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  简历在线制作网站免费版,如何创建个人简历?  中国移动官方网站首页入口 中国移动官网网页登录  如何彻底卸载建站之星软件?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何快速重置建站主机并恢复默认配置?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel怎么实现验证码(Captcha)功能  微信小程序 scroll-view组件实现列表页实例代码  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  5种Android数据存储方式汇总  新三国志曹操传主线渭水交兵攻略  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  高端企业智能建站程序:SEO优化与响应式模板定制开发  iOS正则表达式验证手机号、邮箱、身份证号等  高端云建站费用究竟需要多少预算?  Bootstrap整体框架之CSS12栅格系统  利用JavaScript实现拖拽改变元素大小  海南网站制作公司有哪些,海口网是哪家的?  想要更高端的建设网站,这些原则一定要坚持!  如何用JavaScript实现文本编辑器_光标和选区怎么处理  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  html5的keygen标签为什么废弃_替代方案说明【解答】  太平洋网站制作公司,网络用语太平洋是什么意思?  Android利用动画实现背景逐渐变暗  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  高性能网站服务器配置指南:安全稳定与高效建站核心方案  在Oracle关闭情况下如何修改spfile的参数  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Linux系统命令中tree命令详解  js实现获取鼠标当前的位置  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何快速生成凡客建站的专业级图册?