Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)

发布时间 - 2026-01-11 03:14:47    点击率:

我们接着上文继续,本文我们讲解兄弟组件的通信,项目结构还是跟上文一样.

在src/assets目录下建立文件EventHandler.js,该文件的作用在于给同级组件之间传递事件

EventHandler.js代码:

import Vue from 'Vue';
export default new Vue();

1,在Components目录下新建一个组件Brother1.vue

<template>
 <div>
  <h3>Z国: ghostwu</h3>
  <input v-on:click="send" type="button" value="发送">
  <p>{{msg}}</p>
 </div>
</template>
<script>
 import EventHandler from '../assets/EventHandler.js';
 export default {
  data(){
   return {
    msg : ''
   }
  },
  methods : {
   send(){
    EventHandler.$emit( 'myDefineEv', "ghostwu向岛国发射了一颗*" );
   }
  },
  mounted (){
   let _this = this;
   EventHandler.$on( "RDefineEv", function( data ){
    _this.msg = data;
   } );
  }
 }
</script>

。通过EventHandler.$emit发送一个自定义事件myDefineEv

。通过mouted【相当于jquery的ready, 原生js的onload】,这个是vue生命周期的钩子函数, 用于在页面加载完成之后执行代码,在这里就是接收RDefineEv事件( Brother2.vue定义的 )

2,在Components目录下新建一个组件Brother2.vue

<template>
 <div>
  <h3>R国:八嘎</h3>
  {{msg}}
  <input v-on:click="defend" type="button" value="防御">
 </div>
</template>
<script>
 import EventHandler from '../assets/EventHandler.js';
 export default {
  data(){
   return {
    msg : ''
   }
  },
  methods : {
   defend(){
     EventHandler.$emit( 'RDefineEv', "岛国采用了高科技反*系统" );
   }
  },
  mounted(){
   let _this = this;
   EventHandler.$on( "myDefineEv", function( data ){
    _this.msg = data;
   } );
  }
 }
</script>

。点击按钮发送RDefineEv事件

。文档ready的时候,接收myDefineEv(Brother1.vue)出发的自定义事件

三、在App.vue中调用两个同级组件

<template>
 <div id="app">
 <Brother1></Brother1>
 <Brother2></Brother2>
 </div>
</template>

<script>
 import Brother1 from './components/Brother1.vue';
 import Brother2 from './components/Brother2.vue';

 export default {
 components : {
  Brother1,
  Brother2
 }
 }
</script>

小结:

创建一个事件传递中心,例如EventHandler.js,用它作为传递消息的中介

在需要传值的组件中用EventHandler.$emit触发一个自定义事件,并传递参数

在需要接收数据的组件中用EventHandler.$on监听自定义事件,并在回调函数中处理传递过来的参数

以上这篇Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# vue-cli  # webpack  # Vue非父子组件之间的通信方式详解  # Vue3.2+Ts组件之间通信的实现  # vue中组件之间相互通信传值的几种方法详解  # vue中的$emit 与$on父子组件与兄弟组件的之间通信方式  # vue2.0组件之间传值、通信的多种方式(干货)  # 详解Vue组件之间的数据通信实例  # Vue 组件之间的通信方式详解  # 自定义  # 给大家  # 目录下  # 新建一个  # 在这里  # 并在  # 一颗  # 希望能  # 采用了  # 这篇  # 用它  # 该文件  # 创建一个  # 回调  # 小编  # 大家多多  # 射了  # 加载  # 文档  # vue 


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


相关推荐: js实现点击每个li节点,都弹出其文本值及修改  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  公司门户网站制作流程,华为官网怎么做?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何记录自定义日志?(Log频道配置)  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何在腾讯云服务器快速搭建个人网站?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  JavaScript Ajax实现异步通信  详解阿里云nginx服务器多站点的配置  微信小程序 canvas开发实例及注意事项  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel怎么使用artisan命令缓存配置和视图  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Mybatis 中的insertOrUpdate操作  香港服务器租用费用高吗?如何避免常见误区?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何用好域名打造高点击率的自主建站?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  如何在云服务器上快速搭建个人网站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  智能起名网站制作软件有哪些,制作logo的软件?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  如何在万网自助建站平台快速创建网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  详解Oracle修改字段类型方法总结  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel如何处理表单验证?(Requests代码示例)  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  JavaScript模板引擎Template.js使用详解  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  西安专业网站制作公司有哪些,陕西省建行官方网站?  jQuery中的100个技巧汇总  如何在云主机快速搭建网站站点?  如何在香港免费服务器上快速搭建网站?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  北京企业网站设计制作公司,北京铁路集团官方网站?