Vue3 中的v-model实现父子组件数据同步通信
v-model在vue2中也就是双向绑定作用,但是在vue3中除了实现双向绑定外,还可以进行组件的通信父子组件的数据同步,接下来看看例子:
<template>
<h1>{{ num }}</h1>
<child-event v-model="num"></child-event>
</template>
<script lang="ts" setup>
import childEvent from "./childEvent.vue"
let num = ref(1000)
以上是父组件的代码,接下来我们实现点击子组件的按钮,同步父组件的num值
<template>
<div>
<div>我是子组件</div>
<button @click="handler1">点击增加100</button>
</div>
</template>
<script setup lang="ts">
let emits = defineEmits(['update:modelValue'])
let props = defineProps(['modelValue'])
const handler1 = () => {
emits('update:modelValue', props.modelValue + 100)
// console.info(props)
}
</script>
以上是子组件的代码
<template> <child-event v-model="num"></child-event> //上面的代码等同于下面的代码 <child-event :modelValue="num" @update:modelValue="handler1"></child-event> </template>
v-model理论上的作用是:
第一:相当于给子组件传递props['modelValue'] = 1000的属性值
第二:相当于给子组件绑定了自定义事件update:modelValue
所以,这样就实现了父子组件的数据的同步了。

浙公网安备 33010602011771号