Vue 父子组件传递数据

Vue父组件给子组件传值:

父组件:

<template>
  <div class="father">
    {{ message }}
    <Son v-bind:message="message"></Son>
  </div>
</template>

<script>
//导入Son组件
import Son from "./Son";
export default {
  name: "father",
  data() {
    return {
      message: "hello, father",
    };
  },
  components: {
    Son,
  },
  methods: {},
};
</script>

  

子组件:

<template>
  <div class="son">子元素: {{ message }}</div>
</template>

<script>
export default {
  name: "son",
  props: {
    message: {
      type: String,
      default: "",
    },
  },
  data() {
    return {};
  },
};
</script>

父组件传子组件,props是关键;

Vue子组件给父组件传值:

 父组件:

<template>
  <div class="father">
    <p>{{ message }}</p>
    <!-- @receiveData="receiveData"一定要写在子标签上 -->
    <Son v-bind:message="message" @receiveData="receiveData"></Son>
  </div>
</template>

<script>
//导入Son组件
import Son from "./Son";
export default {
  name: "father",
  data() {
    return {
      message: "hello, father",
    };
  },
  components: {
    Son,
  },
  methods: {
    /**
     * 接收子组件数据
     */
    receiveData(message) {
      this.message = message;
    },
  },
};
</script>

  

子组件:

<template>
  <div class="son">
    <p>子元素: {{ message }}</p>
    <button @click="transferData">click</button>
  </div>
</template>

<script>
export default {
  name: "son",
  props: {
    message: {
      type: String,
      default: "",
    },
  },
  data() {
    return {};
  },
  methods: {
    transferData() {
      //调用父组件接收子组件数据方法,传递数据
      this.$emit("receiveData", "son数据:hello, father!");
    },
  },
};
</script>

子组件传父组件,emit方法是关键;

原文地址:https://www.cnblogs.com/mxh-java/p/13462938.html