Vue组件间的通信

引出问题

vue一个重要的思想就是组件化开发,说到组件化开发,提高结构样式行为的复用性,组件写好了,但组件间之间数据如何传递,就成了一个问题…

vue 组件之间是可以相互嵌套的,就像一个盒子,里面放了两个小盒子,这样就可以形成父子三个,兄弟两个的情况

那么我用一个自己写的小 demo 来说一下数据如何通信,在这里我设置一个场景,父亲和儿子以及未来儿媳妇的故事~

故事开始

有一位父亲,有一个儿子,儿子有一个对象,在这里说明等级,父亲就是父级别组件,儿子和对象是同级别组件。 故事进行中… 父亲给了儿子一套房子,儿子给对象说这以后就是咱们到家了。对象对父亲表达感谢。

故事分析

  • 父亲给儿子一套房子: 父传子 (用到技术:属性绑定
  • 儿子给对象说咱们有房子了:同级别组件之间传递数据 (用到技术:$bus 全局事件总线 )
  • 对象给父亲表达感谢: 子传父 (用到技术: 自定义事件)

代码实现

父亲组件代码如下:

<template><div><p>我是{{name}}</p><p>这是儿子对我说的话:{{formSon}}</p><p>这是儿媳妇对我说的话:{{formDou}}</p><Brother :house="house" @thanks="thanks"></Brother><Brother2 @thank="thank"></Brother2></div>
</template><script>
import Brother from './brother1.vue'
import Brother2 from './brother2.vue'
export default {name: 'TodoTestFather',data() {return {name:'father',house:'这是给儿子的婚房',formSon:'',formDou:''};},components:{Brother,Brother2},methods:{thanks(message){this.formSon=  message},thank(message){this.formDou  = message}}
};
</script><style scoped>p{background-color: rgb(255, 71, 71);}
</style>

儿子组件

<template><div><p>我是老公:{{name}}</p><p>我今年:{{age}}岁了</p><p>我收到了父亲的数据:{{house}}</p><p> <button @click="thankFather">感谢父亲赠与的家</button></p><p>老婆对我说:{{fromWife}}</p><p><button @click="tellWife">告诉老婆咱们有房子啦</button></p></div>
</template><script>
export default {name: 'TodoTestBrother1',props:['house'],data() {return {name:'王雷旺',age:'22',fromWife:''};},mounted() {this.$bus.$on('fromWife', (data)=>{this.fromWife = data})},methods: {thankFather(){this.$emit('thanks', '谢谢老爸的房子');},tellWife(){this.$bus.$emit('formHusband','老爸给咱们了一套房子老婆')}},};
</script><style  scoped>p{background-color: yellow;}
</style>

对象(儿媳妇组件)

<template><div><p>我是老婆:{{name}}</p><p>我今年:{{age}}岁了</p><p><button @click="thankFather">感谢父亲赠与的家</button></p><p>我收到了老公的来信:{{formHunband}}</p><p><button @click="thankHusband">感谢老公</button></p></div>
</template><script>
export default {name: 'TodoTestBrother2',data() {return {name:'陈彦戈',age:21,formHunband:''};},mounted() {this.$bus.$on('formHusband', (data)=>{this.formHunband = data})},methods: {thankFather(){this.$emit('thank','谢谢爸爸,爸爸辛苦了,请喝茶')},thankHusband(){this.$bus.$emit('fromWife','谢谢老公我们有家啦!')}},
};
</script><style scoped>p{background-color: palevioletred;}
</style>

如何开启全局事件总线

另外说一下 想使用 $bus(全局事件总线实现兄弟或者爷孙之间的数据传递),那么就需要,开启全局事件总线,代码如下:

//创建vm
new Vue({el:'#app',render: h => h(App),beforeCreate(){Vue.prototype.$bus= this  //安装全局事件总线 }
})

执行效果

父传子:(下面是父亲给儿子说的话)
子传父:

儿子和对象之间的数据传递

我们家伍佰(英短)8个月啦~

Vue组件间的通信【子传父,父传子,同级传递,爷孙传递】相关推荐

  1. vue 组件间的通信,子组件向父组件传值的方式总结

    写vue,如果页面涉及到多个组件,就会涉及组件之间的通信,可能是父子组件间的通信,也可以是同级组件间的通信,那么,vue里面的组件如何通信.一般来说在vue的数据传递是在父组件传子组件通过属性来传,子 ...

  2. Vue组件间通信的几种方式

    引入 用vue可以是要组件复用的,而组件实例的作用域是相互独立,这意味着不同组件之间的数据无法互相引用 一般来说,组件之间可以有几种关系: 如上图所示,A 和 B.B 和 C.B 和 D 都是父子关系 ...

  3. 面试-vue组件间通信

    说一说vue组件间的通信? 1.props,$emit,sync props父组件绑定传值,子组件声明props接收 props接收值原则上不允许改变,但对于对象属性改变,可能不会被vue检测到 $e ...

  4. Vue组件之间的通信-父传子-子传父

    文章目录 Vue的组件嵌套 Vue组件间通信 1.父组件传递给子组件 1.1数组的方式 1.2对象的方式 2.子组件传递给父组件 Vue的组件嵌套 前面我们是将所有的逻辑放到一个App.vue中: 在 ...

  5. vue组件间传值: 父传子、子传父、非父子组件传值

    父组件向子组件传值 // 父组件通过属性将值传递给子组件 <template><div><closePopup :optionsID="optionsID&qu ...

  6. vue组件间通信传递数据的四种方式(路由传参、父子组件传参、兄弟组件传参、深层次传参)

    前言: vue组件间通信对于经常来写vue的伙伴来说应该是很轻松的,对于一些刚入门的伙伴来说可能就有些迷茫,感觉方式有很多种,但是总结起来又不知道应该怎么说,在下面的文章中,我结合自己的开发过程中经常 ...

  7. Vue 组件间通信六种方式

    前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示,A 和 B.B 和 C.B 和 D ...

  8. vue组件间通信六种方式

    vue组件间通信六种方式 组件之间的传值通信 组件之间的通讯分为三种:父传子.子传父.兄弟之间的通讯: props/$emit 父传子:主要是通过props来实现的 具体实现:父组件通过import引 ...

  9. vue组件间通信方法集

    整理vue中8种常规的通信方案 1.通过 props 传递 2.通过 $emit 触发自定义事件 3.使用 ref 4.EventBus 5.$parent 或$root 6.attrs 与 list ...

最新文章

  1. IntelliJ IDEA 2021.2 正式发布了!
  2. Geoserver怎样切割离线瓦片地图
  3. 51NOD 1424 零树
  4. 递归算法题解析:设m,n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目
  5. C51 printf修改如何能打印到不同的设备呢?
  6. java使用validator进行校验
  7. 无法启动SQL Server 2005中的SQL Serve(MSSQLSERVER)服务
  8. 计算机操作基本知识公务员,公务员计算机类操作系统知识.pdf
  9. win 7 电脑错误676、734、678、651等解决办法
  10. 使用Julia进行图像处理--图像分割
  11. 设置NumericStepper控件不可用状态的上下箭头颜色。
  12. SAP SD跨公司销售案例教程前台操作
  13. mysql导出excelsql语句乱码_excel打开是乱码-悄悄告诉你,MySQL 通过SQL语句导出到Excel的方法...
  14. [译]AngularJS1.3.0 开发者指南(四) -- 控制器
  15. BRE BRE ProMax 2.0.7047.0 工艺流程模拟软件ProMax\
  16. 点猫科技与Aqara绿米达成战略合作,助推校内人工智能教育普及
  17. MySQL索引的数据结构及算法原理
  18. trunk vlan pvid 学习实验整理 2
  19. TCP/IP五层协议体系结构的各层功能
  20. 【LaTeX符号】条件独立与不独立符号

热门文章

  1. python实现目标识别眼镜_用Python快速实现YOLO目标检测
  2. We Love Taipei!下次见~
  3. 用 pnpm 管理 Monorepo 项目
  4. dev、test、pro、pre四大环境介绍
  5. STC-B电路板实现实时温度检测与单位转换
  6. js字符串和数字之间的转换
  7. pwm驱动 pca9685 代码简析
  8. 网站加入代码让网页以电脑端打开_移动端网站和pc端网站的异同点
  9. App如何获取渠道邀请来源
  10. mac 本地php环境搭建,mac下php环境搭建的方法