单一值传递
父组件
<template>
<div >
<h1>v-model实现父子组件通讯</h1>
<hr>
<child1 v-model="num"></child1>
<!-- 上下两个是等价的 -->
<child1 :modelValue="num" @update:modelValue="handle"></child1>
</div>
</template>
<script setup>
import {ref} from 'vue'
import child1 from './child1.vue';
let num = ref(0);
const handle =(value)=> {
num.value = value
}
</script>
子组件
<template>
<div>
<h1>我是子组件</h1>
<!-- 父组件传过来的值 -->
<h3>{{ modelValue }}</h3>
<button @click="$emit('update:modelValue', modelValue+1)">修改父组件的值</button>
</div>
</template>
<script setup>
let props = defineProps(['modelValue'])
const $emit = defineEmits(['update:modelValue'])
</script>

多个v-model实现父子组件传值
父组件
<template>
<div >
<h1>v-model实现父子组件通讯</h1>
<hr>
<child1 v-model:firstnum="num1" v-model:secondnum="num2"></child1>
</div>
</template>
<script setup>
import {ref} from 'vue'
import child1 from './child1.vue';
let num1 = ref(0);
let num2 = ref(0);
</script>
<style lang="scss" scoped></style>
子组件
<template>
<div>
<h1>我是子组件</h1>
<!-- 父组件传过来的值1 -->
<h3>{{ firstnum }}</h3>
<!-- 父组件传过来的值2 -->
<h3>{{ secondnum }}</h3>
<button @click="handler">修改父组件的值</button>
</div>
</template>
<script setup>
let props = defineProps(['firstnum', 'secondnum'])
const $emit = defineEmits(['update:firstnum', 'update:secondnum'])
const handler = () => {
$emit('update:firstnum', props.firstnum+1)
$emit('update:secondnum', props.secondnum+4)
}
</script>
