vue2.0父子组件及非父子组件之间的通信方法


Posted in Javascript onJanuary 21, 2017

1.父组件传递数据给子组件

父组件数据如何传递给子组件呢?可以通过props属性来实现

父组件:

<parent>
  <child :child-msg="msg"></child>//这里必须要用 - 代替驼峰
</parent>
data(){
  return {
    msg: [1,2,3]
  };
}

子组件通过props来接收数据:

方式1:

props: ['childMsg']

方式2 :

props: {
  childMsg: Array //这样可以指定传入的类型,如果类型不对,会警告
}

方式3:

props: {
  childMsg: {
    type: Array,
    default: [0,0,0] //这样可以指定默认的值
  }
}

这样呢,就实现了父组件向子组件传递数据.

2.子组件与父组件通信

那么,如果子组件想要改变数据呢?这在vue中是不允许的,因为vue只允许单向数据传递,这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的.

子组件:

<template>
  <div @click="up"></div>
</template>
methods: {
  up() {
    this.$emit('upup','hehe'); //主动触发upup方法,'hehe'为向父组件传递的数据
  }
}

父组件:

<div>
  <child @upup="change" :msg="msg"></child> //监听子组件触发的upup事件,然后调用change方法
</div>
methods: {
  change(msg) {
    this.msg = msg;
  }
}

3.非父子组件通信

如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现通信.
所谓eventHub就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件.

let Hub = new Vue(); //创建事件中心

组件1触发:

<div @click="eve"></div>
methods: {
  eve() {
    Hub.$emit('change','hehe'); //Hub触发事件
  }
}

组件2接收:

<div></div>
created() {
  Hub.$on('change', () => { //Hub接收事件
    this.msg = 'hehe';
  });
}

这样就实现了非父子组件之间的通信了.原理就是把Hub当作一个中转站!

以上所述是小编给大家介绍的vue2.0父子组件及非父子组件之间的通信方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
React简单介绍
May 24 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
浅谈手写node可读流之流动模式
Jun 01 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 Javascript
微信小程序 devtool隐藏的秘密
Jan 21 #Javascript
JS设置CSS样式的方式汇总
Jan 21 #Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 #Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 #Javascript
js操作浏览器的参数方法
Jan 21 #Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 #Javascript
js实现用户输入的小写字母自动转大写字母的方法
Jan 21 #Javascript
You might like
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
python类装饰器用法实例
2015/06/04 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
static关键字的用法
2013/10/07 面试题
应用心理学个人的求职信
2013/12/08 职场文书
应付会计岗位职责
2013/12/12 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
护理医院见习报告
2014/11/03 职场文书
2014年后勤工作总结
2014/11/18 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis