vue 组件通信

本文主要解决vue组件之间的通信问题

Prop 向下传递,事件向上传递

Prop

(主要用于父组件向子组件下发数据)

  1. 子组件中显式地用 props选项声明它预期的数据:
// 子组件使用数据
<a href="/" :class="navActive === 'index' ? 'active' : ''">首页</a>

// props声明
export default {
  data() { ... },
  props: ['navActive', 'isZjrc']
  ...
}
  1. 父组件中传入数据
// 传入静态数据
<header-nav navActive="index"></header-nav>

// 传入动态值
<header-nav :navActive="navClassname"></header-nav>

事件

(主要用于子组件给父组件发送数据)

父子组件通信

  1. 在子组件中触发父组件的事件
<button @click="toParent">传值</button>

...
export default {
  data() { ... },
  methods: {
       toParent() {
          this.$emit('childToParentMsg', '子组件向父组件传值')
       }
  }
}

  1. 在父组件中监听事件
<header-nav navActive="index" @childToParentMsg="showMsg"></header-nav>
<h1>{{childMsg}}</h1>

// 事件绑定
export default {
    data() {
      return {
        childMsg: ''
      }
    },
    components: {
      HeaderNav
    },
    methods: {
      showMsg(msg) {
        this.childMsg = msg
      }
    }
}

非父子组件通信

  1. 在组件A中监听事件
export default {
    mounted() {
        this.$on("showDialog", id => {
          this.showDialog(id);
        });
    }
}
  1. 在组件B中触发A的事件
<apply-invoice ref="invoiceDialog"></apply-invoice>

export default {
    mounted() {
        this.$refs["invoiceDialog"].$emit("showDialog",this.customerId);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 组件通信各种情况总结VUE是以数据驱动的MVVM框架,又是模块化开发,所以各个组件间的通信传递数据非常重要,在项目...
    流年_338f阅读 591评论 0 2
  • 参考自vue.js 官方文档 如果你使用 Vue 进行开发的话,你不得不了解的一项就是 Vue 的组件(Compo...
    寿木阅读 390评论 0 2
  • 兄弟通信 看了官网的教程,我认为兄弟通信是其他组件通信的基础,只要掌握好兄弟通信,其他两种也很容易掌握。首先来看官...
    凤凰东南飞阅读 1,013评论 2 1
  • 子组件=》父组件 vue的组件之间的通信类似angular的父子层级之间通信,父组件获取子组件数据步骤大概如下: ...
    羊烊羴阅读 343评论 0 3
  • 不知你们有看过徐静蕾那期的《朗读者》麽,没错,奶奶的星星。老徐的朗读,令人动容,也许这就是朗读者成功的秘诀,回归本...
    谭niuniu阅读 347评论 0 4