美文网首页
vue 组件之间通信

vue 组件之间通信

作者: 阿亮2019 | 来源:发表于2018-09-09 16:48 被阅读8次

一切从简,不用webpack。

1. props $emit

主要是父子之间通信,兄弟之间通信。

<!-- html -->
<!DOCTYPE html>
<html>
<head>
<script src="http://vuejs.org/js/vue.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<div id="app">
  <p>父组件中的值parentNum: {{ parentNum }}</p>
  <add-component :transfer=parentNum @change=plus></add-component>
  <reset-component @reset=reset></reset-component>
  <button @click=fatherAdd>父组件自增</button>
</div>
</body>
</html>
Vue.component('add-component', {
  template: `
    <div>
      <div>子组件中的值childNum: {{childNum}}</div>
      <button @click="increment">子组件中自增</button>
    </div>
  `,
  props: {
    transfer: {
      Number,
    }
  },
  watch: {
    'transfer': function(childNum) {
      this.childNum = childNum;
    }
  },
  data() {
    console.warn('transfer:' + this.transfer);
    return {
       childNum: this.transfer
    }
  },
          
  methods: {
    increment() {
      this.childNum++;
      this.$emit('change', this.childNum)
    }
  },
});

Vue.component('reset-component', {
  template: `
    <div>
      <button @click=reset>重置</button>
    </div>
  `,
  methods: {
    reset() {
      this.$emit('reset');
    }
  }
});

new Vue({
  el: '#app',
  data: {
    parentNum: 0
  },
  methods: {
    fatherAdd() {
      this.parentNum += 1;
    },
    plus(newNum) {
      console.log('newNum:' + newNum);
      this.parentNum = newNum;
    },
    reset() {
      this.parentNum = 0;
    }
  }
})

父子之间通信说明:
父组件向子组件add-component传递初始值parentNum,子组件通过props接受并自定内部变量用childNum,子组件中有一个按钮,每点击一下数值就会自增1。

如果子组件用了自己的变量而不是直接用的父组件的变量,则需要通过watch来实时更新子组件的内容 。
watch transfer表示: 一旦父组件更新了,立马传递到子组件中。
子组件通过$emit方法向父组件传递数值。

兄弟组件通信说明:
reset-component是add-component的兄弟组件,本示例中无法直接通信,可借助父组件通信。

2. eventBus

/新建一个Vue实例作为中央事件总嫌/
let event = new Vue();

/监听事件/
event.$on('eventName', (val) => {
//......do something
});

/触发事件/
event.$emit('eventName', 'this is a message.');

相关文章

  • vue组件之间通信

    vue 组件之间通信 vue组件之间通信方式: 1.父组件通过props向下传数据给子组件,子组件通过$emit事...

  • 老生常谈——vue组件之间通信

    老生常谈的组件之间通信 vue组件之间的通信细分为三种情况:兄弟组件之间的通信,父组件向子组件传递数据,子组件向父...

  • Vue.js--组件通信

    vue组件之间的通信包括三种: 1.父组件向子组件通信 2.子组件向父组件通信 3.同级组件之间的通信 首先,看一...

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • 【Vue2】组件传值的六种方法

    Vue 组件之间的通信大概归类为: 父子组件通信: props/$emit;ref/refs;$attrs / $...

  • Vue 组件 / 通信

    子组件=》父组件 vue的组件之间的通信类似angular的父子层级之间通信,父组件获取子组件数据步骤大概如下: ...

  • Vue.js基础(二)

    1. 组件之间的通信 向子组件中传递 number=99 子组件a.vue中 执行效果 2. 组件之间的通信 - ...

  • Vue组件通信

    Vue 组件之间的通信,通常我们遇到的都是父子组件之间的通信 一、父子组件传参 子组件定义 Props 属性; 父...

  • Vue组件通信

    Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...

  • Vue组件通信

    总体来说,Vue中组件之间的通信场景如下图: 可以将其分为父子组件通信、兄弟组件通信、跨级组件通信。 1. 自定义...

网友评论

      本文标题:vue 组件之间通信

      本文链接:https://www.haomeiwen.com/subject/pkhdgftx.html