对vue2版本的组件之间传值的一个简单整合:

  1. 父组件 =》 子组件: props 和 refs
-
props: { msg: String }
//parent
<hello-world :msg="welcome to vue.js" />this.$ref.helloWorld.msg
  1. 子组件 =》 父组件 : 自定义事件
//child
this.$emit('send', msg)
//parent
<hello-world @send="sendMsg($event)" />
  1. 兄弟组件: 通过共同祖辈搭桥 p a r e n t 或 parent或 parent或root
// brother1
this.$parent.$on('foo', handle)
// brother2
this.$parent.$emit('foo')
  1. 祖先=>后代 provide/inject
// ancestor
provide() { return {msg: 'welcome'}
}
// descendant
inject: ['msg']
  1. 后代 =》祖先 递归一直派发到root
// 定义一个dispatch方法,指定要派发事件名称和数据
function dispatch(eventName, data) { let parent = this.$parent while (parent) { // 父元素来用$emit触发 parent.$emit(eventName,data) // 递归查找父元素  只要还存在父元素就继续往上查找parent = parent.$parent }
}
// 使用,HelloWorld.vue
<h1 @click="dispatch('hello', 'hello,world')">{{ msg }}</h1>
// App.vue
this.$on('hello', this.sayHello)
  1. 任意两个组件之间 事件总线 和 vuex

    事件总线

class EventBus {constructor() {this.callbacks = {}}$on(name, fn) {this.callbacks[name] = this.callbacks[name] || []this.callbacks[name].push(fn)}$emit(name) {let fns = this.callbacks[name]if(fns) {fns.map(fn => fn())}}
}//运用main.jsVue.prototype.$bus = new EventBus()this.$bus.$on('send', handleFn)
this.$bus.$emit('send')
vuex: 创建唯一的全局数据管理者store,过载到vue实例,通过它管理状态数据并通知组件状态变更

3,4,5,6 都可以直接用$root

vue 2 组件之间传值相关推荐

  1. vue父子组件之间传值的方法

    vue父子组件之间传值的方法 一.基本父子传值 父传子 方式: props 效果: 把父组件的fatherName属性传入子组件,在子组件中使用 父组件代码: <template>< ...

  2. Vue - 全局组件之间传值(中间件传值)

    Vue项目中全局组件之间传值(中间件传值) 一. 使用方法 二. 传值实例 一. 使用方法 创建一个中间件文件,文件名自定义 这里创建的文件为 send.js send.js 中配置 import V ...

  3. Vue 兄弟组件之间传值 Bus方法

    1.在vue项目中新建一个js文件(文件名:bus.js) import Vue from 'vue'export default new Vue(); 2.在需要传值的页面引用并开始传参 <s ...

  4. vue中组件之间传值的六种方式(完整版)

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

  5. vue跨组件之间传值Provide/Inject

    官网传送门:inject  Vue2.2.0+ # 背景   关于Vue组件的通讯方式相信大家能倒背如流 父子组件:通过prop,$emit,[$root,$parent,$children] 非父子 ...

  6. Vue父子组件之间传值

    组件分两种,全局组件和局部组件 全局组件这么写 Vue.component("nav-bar",{props:['navShow',"elecText",&qu ...

  7. VUE兄弟组件之间传值,Vue.prototype.bus = new Vue(),this.bus.$on 的使用方法

    举个例子: 组件一中有个分享按钮,点击分享按钮,展示组件二中的分享组件: 组件二分享组件有个取消按钮,点击关闭分享组件. 一.在main.js中添加一个bus实例: Vue.prototype.bus ...

  8. VUE父子组件之间的传值,以及兄弟组件之间的传值;

    一.Vue父子 组件之间传值 vue使用中,经常会用到组件,好处是: 1.如果有一个功能很多地方都会用到,写成一个组件就不用重复写这个功能了: 2.页面内容会简洁一些:方便管控: 子组件的传值是通过p ...

  9. vue兄弟组件之间的传值,bus运用,beforeDestroy销毁,Bus.$off

    vue兄弟组件之间的传值 1.建立一个单独的文件bus.js import Vue from 'vue' export default new Vue() 2.传递事件 // 传递事件 import ...

最新文章

  1. rust房子 如何拆除_小产权房“依法拆除”?中央新文件透露“1个新信号”
  2. vue中通过post方式异步上传文件
  3. 盘点VS2015 预览版的5个新特性
  4. python无法安装tensorflow_python – 无法安装Tensorflow Mac
  5. python 杂记(二)
  6. workerman events.php,workerman安装event扩展的方法介绍
  7. 2021年热门临床研究盘点
  8. asp.net 文本框显示xml格式数据_Excel 办公小技巧,查找和替换数据,您值得拥有...
  9. 图书馆用文本文件booklist.txt记录图书的书目,其中包括book1,book2,.....,book10.现在又要采购一批新书,编写程序将新的书目添加到目录中。
  10. 如何修改 WordPress 的用户默认头像?
  11. php 省份的缩写,34个省级行政区记忆口诀、省份简称和省会城市表
  12. 如何从godaddy转出域名
  13. 想当然的性能调优:加一个SSD
  14. 目前上海最便宜的企业宽带-199元的旺铺通B1套餐
  15. 不用PS,也能实现抠图的工具
  16. 盘点阿里巴巴 15 款开发者工具 侵删
  17. 学习vue-vben-admin遇到的问题(一)
  18. linux格式化4t硬盘分区,详解:Linux 硬盘,格式化,分区 详解
  19. python爬取网易云音乐排行榜歌单热评(完整版)
  20. android手机主流机型

热门文章

  1. dl388 linux系统安装系统,HP DL388G5 安装64位linux虚拟系统出错!
  2. Linux下so文件的生成和使用
  3. jQuery参考手册
  4. STM32学习笔记(一)——如何下载程序到STM32单片机
  5. 高等数学(第七版)同济大学 总习题九(后10题) 个人解答
  6. ubuntu下查看硬件信息等指令整理,安装并简单运行HotSpot
  7. 时空图卷积网络ST-GCN论文完全解读记录
  8. 构造函数c语言引用,c – 定义的构造函数的“未定义引用”
  9. 数据库的表、字段、字段的值的相关操作
  10. 02 C语言使用队列实现缓存模块QueueBuffer