Vue组件通信

父子组件相互通信

  1. 父传子 父组件在调用的子组件标签上添加额外属性,如v-bind:message="msg" 将父组件中的msg属性传递给子组件(如果传递死数据,可以不使用指令)
    子组件通过props来接受父组件传递的数据,如props:{'message'}
    子组件接收和父组件传递名称必须一样
  2. 子组件自定义事件,通过$emit 向父组件传递数据,如 子组件
onClick(){
  this.$emit('showData',{name:'hello'})
}

父组件调用:

<child @showData = 'show'></child>

methods(){
  show(data){
  this.name = data.name
  }
}

  1. 父组件访问子组件可以使用$children来获取一个包含所有子组件(vueCommponet)的数组,可以通过下标
    索引来获取相对应的子组件的数据。
    子组件访问父组件可以使用$parent来获取父组件的数据(不推荐)
  2. 向子组件添加ref属性,父组件通过$refs根据ref属性值来定位子组件,从而获取子组件的数据
    $refs 只会在组件渲染完成之后生效,并且它们不是响应式的。这仅作为一个用于直接操作子组件的“逃生舱”——你应该避免在模板或计算属性中访问 $refs。

非父子组件通信

1.通过父组件进行通信
2.通过建立公共仓库进行通信
在所有组件最上层建立一个中央事件总线(bus)

import Vue from 'vue'
var PublicEvent = new Vue()
export default PublicEvent

如 从组件1调用组件2 中的方法和数据
在组件1和2中都需要引入中央事件总线PublicEvent
在组件2 中,定义一个事件,通过该事件触发PublicEvent.$emit('名称',需要传递的值)

在组件1中,通过钩子函数mounted在初始化组件时调用PublicEvent.$on('名称',func)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 父子组件通信 1、父子组件通过prop传递数据 父组件可以将一条数据传递给子组件,这条数据可以是动态的,父组件的数...
    视觉派Pie阅读 5,062评论 0 18
  • 背景   Vue是单页面应用,单页面应用又是由组件构成,各个组件之间又互相关联,那么如何实现组件之间通信就显得尤为...
    A郑家庆阅读 4,592评论 0 1
  • 对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的各种方式的总结,总共有8种方式。 1....
    edc余悸阅读 2,944评论 0 3
  • 能工摹形,巧匠窃意。必三省吾身,万不可怠惰因循。 foreword 这篇容纳了我个人所知道的一些Vue 2.x组件...
    aichisuan阅读 2,976评论 0 1
  • 简介 组件是Vue的核心,而组件间的状态管理和数据传递是开发绕不开的问题。在Vue中,组件和组件之间是相互独立的,...
    LeoMelody阅读 5,717评论 1 2

友情链接更多精彩内容