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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
javascript 模拟点击广告
Jan 02 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
Sep 10 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
Jun 22 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
vue-router的hooks用法详解
Jun 08 Javascript
nginx部署多个vue项目的方法示例
Sep 06 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
我的论坛源代码(八)
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/14 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
解析js如何获取css样式
2016/12/11 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
java程序员面试交流
2012/11/29 面试题
公司成立感言
2014/01/11 职场文书
模具毕业生推荐信
2014/02/15 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
Python中22个万用公式的小结
2021/07/21 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏