示例:父组件传递100到子组件,子组件拿到之后显示出来,然后将值改为50,将在父组件中回显。最终结果如下图所示: 请添加图片描述

  • Father.vue
<template>
  <h2>父组件</h2>
  {{ money }}
  <hr>
  <!--  属性绑定:将值传递给子组件 -->
  <!--  绑定自定义事件,用来接收通知,接收到通知之后触发update_money方法-->
  <Son :money="money" @chang_money="update_money"></Son>
</template>

<script>
import {ref} from 'vue'
import Son from "./Son.vue"

export default {
  name: 'Father',
  //注册子组件
  components: {
    Son
  },
  setup() {
    let money = ref(100)
    let update_money = (param) => {
      console.log(param)
      money.value = param
    }
    return {money, update_money}
  }
}
</script>
  • Sun.vu
<template>
  <h2>子组件</h2>
  从父组件中获取到的钱:{{ money }}
  <br>
  <button @click="xiaoFei">儿子花50</button>
  <br>
  子组件花费后剩下的钱: {{ qian }}
</template>

<script>
import {ref} from 'vue'

export default {
  name: "Son",
  //子组件使用props接收父组件的数据(直接使用)
  props: {
    money: {
      type: Number,
      default: 0
    }
  },
  // 定义抛出的事件名称
  emits: ['chang_money'],
  setup(props, {emit}) {
    //子组件通过props拿到父组件传递过来的数据(可进行处理)
    let qian = ref(props.money)

    const xiaoFei = () => {
      //通知父组件,money变成了50
      qian.value = qian.value - 50
      emit('chang_money', qian.value)
    }

    return {qian, xiaoFei}
  }
}
</script>