vue组件通信

1. 父子组件通信

  1. 基本方法(推荐):
    a. 父 => 子:使用prop向子组件传递静态或动态的数据,如:<blog-post :title="vue"></blog-post>,注意传递的数据需要在子组件用props属性接收。
    b. 子 => 父:使用 v-on:event 和 $emit。父组件使用 v-on 或 @ 向子组件传递事件,再在子组件中调用 $emit 触发事件即可,注意传递的事件不需要在子组件的props中接收。
  2. 父子组件链(不推荐):
    a. 父 => 子:使用 this.$children 访问或递归访问其子孙组件。
    b. 子 => 父:使用 this.$parent 访问或递归访问其父级组件,直至根组件。
  3. 子组件索引:
    a. 父 => 子:用 ref 属性为子组件指定一个索引名称,在父组件中通过 this.$ref[name] 访问ref为name的子组件。

2. 爷孙组件通信

  1. 父子嵌套:
    a. 使用嵌套的父子通信进行层级传递即可。
  2. 依赖注入:
    a. 父级组件定义 provide 函数返回提供的数据,子孙后代组件使用 inject 属性接收上层组件provide的数据。

3. 任意组件通信

  1. 事件总线eventBus:
    1. let bus = new Vue(); Vue.prototype.bus = bus创建一个空的Vue实例,挂载到Vue原型上作为中央事件总线;
    2. 在需要传值的组件中使用 this.bus.$emit('event', data) 触发一个自定义事件,并传递数据;
    3. 在需要接收数据的组件中使用 this.bus.$on('event', data => { }) 监听自定义事件,并在回调函数中处理传递过来的数据。
  2. 使用vuex
    1. 创建一个全局state管理的 store;
    2. 组件中使用 this.$store.state 访问 state;
    3. 组件中使用 commit mutation 或者 dispatch action 来更新store里的数据。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 组件(Component)是Vue.js最核心的功能,也是整个架构设计最精彩的地方,当然也是最难掌握的。...
    六个周阅读 5,739评论 0 32
  • Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...
    dino小恐龙阅读 1,938评论 0 2
  • 组件通信各种情况总结VUE是以数据驱动的MVVM框架,又是模块化开发,所以各个组件间的通信传递数据非常重要,在项目...
    流年_338f阅读 614评论 0 2
  • 子组件=》父组件 vue的组件之间的通信类似angular的父子层级之间通信,父组件获取子组件数据步骤大概如下: ...
    羊烊羴阅读 362评论 0 3
  • 简书的markdown编译器不好用,看原文"vue-unicom"的作者:szpoppy,如果觉得对你有用,请一定...
    _wim阅读 1,588评论 1 4

友情链接更多精彩内容