vue3中的v-model语法糖
2023-12-13 04:21:33
Vue2的v-model默认解析成 :value 与 @input
Vue3的 V-model 默认解析成 :modelValue 与 @update:modelValue
vue3中只需要 v-model 指令可以支持对个数据在父子组件同步,不再支持 .sync 语法
vue3 中 v-model 语法糖
:modelValue="count"
和 @update:modelValue="count=$event"
vue3 中 v-model:xxx
语法糖?
:xxx="count"
和 @update:xxx="count=$event"
方式一 通过 v-model 解析成 modelValue @update:modelValue
子组件
<script setup lang="ts">
defineProps<{
modelValue: number
}>()
defineEmits<{ (e: 'update:modelValue', count: number): void }>()
</script>
<template>
<div>
计数器{{ modelValue
}}<button @click="$emit('update:modelValue', modelValue + 1)">+1</button>
</div>
</template>
<style lang="scss" scoped></style>
父组件
<script setup lang="ts">
const count = ref(10)
</script>
<template>
<!--组件 -->
<!--<cp-radio-btn
:model-value="count"
@updata:model-value="count = $event"
></cp-radio-btn>-->
<!-- :model-value="count"@updata:model-value="count = $event"
以这样的形式写,就可以简写为 v-model="count"依旧生效 -->
<cp-radio-btn v-model="count"></cp-radio-btn>
</template>
<style lang="scss" scoped></style>
点击按钮,计数器+1
方式二: 通过 v-model:count 解析成 count @update:count
子组件
<script setup lang="ts">
defineProps<{
count: number
}>()
defineEmits<{ (e: 'update:count', count: number): void }>()
</script>
<template>
<div>
计数器{{ count }}
<button @click="$emit('update:count', count + 1)">+1</button>
</div>
</template>
<style lang="scss" scoped></style>
父组件
<script setup lang="ts">
const count = ref(10)
</script>
<template>
<!--组件 -->
<cp-radio-btn v-model:count="count"></cp-radio-btn>
</template>
<style lang="scss" scoped></style>
文章来源:https://blog.csdn.net/weixin_59527403/article/details/134895654
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!