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. 【DBMS 数据库管理系统】数据仓库中 数据追加 ( 时标方法 | DELTA 文件法 | 前后映像文件法 | 日志文件法 )
  2. Fluid — 云原生环境下的高效“数据物流系统”
  3. activiti动态办理人_安全生产许可证办理相关问题
  4. php bc gmp,php中ipv6转纯数字和反转
  5. Linux---文件权限的控制
  6. 动态链接库dll生成与调用 加密 电脑唯一识别 windows下多个cmd命令输出结果的同时获取 本地时间的处理
  7. 如何把Excel文件数据导入在SQL中
  8. 用计算机计算三角函数角度,角度计算器
  9. 全系统可用PhotoshopCS6纯净版下载(亲测)支持Win10
  10. Butterworth滤波
  11. winword.exe应用程序错误
  12. java基于easypoi实现对导出的excel文档加密
  13. 《iOS 开发进阶(唐巧)》读书笔记
  14. 利用二进制位求平均值
  15. HTML5通过js调用手机摄像头
  16. CVPR小样本检测:蒸馏上下文助力小样本检测(代码已开源)
  17. jQuery动画事件
  18. Kubernetes安装dashboard
  19. ESP32C3 WiFi 连接
  20. 代号海岸线如何用电脑玩 代号海岸线PC电脑版玩法教程

热门文章

  1. Linux网络基础管理
  2. Mysql、通信认证机制<前端学习笔记>
  3. SpringBoot集成JPA(2)
  4. Linux环境配置-Jdk
  5. 热转印标签印刷机行业分析-热转印标签印刷机产能、产量、产能利用率及发展趋势
  6. java日志打印使用指南
  7. csgo 单人训练房
  8. python xlsx读写_Python Excel文件的读写操作(xlwt xlrd xlsxwriter)
  9. JVM系列(三):程序计数器(PC寄存器)
  10. 17种求三角形面积的公式,从平面到立体