news 2026/4/23 11:35:38

vue3中v-model 用法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue3中v-model 用法详解

一、v-model的本质

v-model本质上是一个语法糖,用于实现:

  • 父组件向子组件传值

  • 子组件向父组件回传更新

在 Vue 3 中,v-model默认等价于:

:modelValue="xxx" @update:modelValue="xxx = $event"

二、基础用法(表单元素)

1. 文本输入框

<input v-model="username" />

等价于:

<input :value="username" @input="username = $event.target.value" />

2. 常见表单绑定

表单类型示例
text<input v-model="text" />
checkbox<input type="checkbox" v-model="checked" />
radio<input type="radio" value="A" v-model="picked" />
select<select v-model="selected">
textarea<textarea v-model="msg"></textarea>

三、组件上的v-model(核心重点)

1. Vue 3 默认规则(强烈推荐)

子组件
<script setup> defineProps({ modelValue: String }) const emit = defineEmits(['update:modelValue']) </script> <template> <input :value="modelValue" @input="emit('update:modelValue', $event.target.value)" /> </template>
父组件
<Child v-model="username" />

2. 等价展开写法(理解用)

<Child :modelValue="username" @update:modelValue="username = $event" />

四、自定义v-model参数(Vue 3 新特性)

1. 父组件

<Child v-model:title="title" />

2. 子组件

<script setup> defineProps({ title: String }) const emit = defineEmits(['update:title']) </script> <template> <input :value="title" @input="emit('update:title', $event.target.value)" /> </template>

五、多个v-model(非常实用)

父组件

<Child v-model:title="title" v-model:content="content" />

子组件

<script setup> defineProps({ title: String, content: String }) const emit = defineEmits([ 'update:title', 'update:content' ]) </script>

六、v-model修饰符(.trim/.number等)

1. 使用方式

<Child v-model:title.trim="title" />

2. 子组件接收修饰符

<script setup> const props = defineProps({ title: String, titleModifiers: { default: () => ({}) } }) </script>

3. 使用修饰符

if (props.titleModifiers.trim) { value = value.trim() }

七、在computed中使用v-model(双向绑定)

const value = computed({ get() { return props.modelValue }, set(val) { emit('update:modelValue', val) } })

模板中直接使用:

<input v-model="value" />

八、v-model与 Vue 2 的核心差异

项目Vue 2Vue 3
默认 propvaluemodelValue
默认事件inputupdate:modelValue
多 v-model不支持支持
修饰符内置可自定义
语法固定更灵活

九、最佳实践(工程经验)

  1. 组件统一使用modelValue

  2. 始终通过emit修改值

  3. 避免在子组件中直接修改 props

  4. 多字段表单优先使用多个 v-model

  5. 复杂逻辑用computed封装 v-model


十、完整示例(可直接复制)

父组件

<script setup> import { ref } from 'vue' import MyInput from './MyInput.vue' const username = ref('') </script> <template> <MyInput v-model="username" /> <p>{{ username }}</p> </template>

子组件MyInput.vue

<script setup> defineProps({ modelValue: String }) const emit = defineEmits(['update:modelValue']) </script> <template> <input :value="modelValue" @input="emit('update:modelValue', $event.target.value)" /> </template>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:31:45

书籍是进步的阶梯,职场人自我提升必看的书籍推荐

职场达人们有一个共同点&#xff0c;那就是喜欢读书&#xff01;书籍是进步的阶梯&#xff0c;作为职场人&#xff0c;阅读是非常好的充电方式&#xff0c;可以让你在较短时间内快速实现自我提升。那么&#xff0c;有哪些书是值得职场人阅读的呢&#xff1f;本文为大家带来7本经…

作者头像 李华
网站建设 2026/4/22 3:19:43

企业文化三部经典著作推荐,做好企业文化建设必读

有很多管理者常向我抱怨&#xff0c;说自己的企业没有文化、说自己不懂企业文化建设。问我该如何才能在组织内成体系的推进企业文化建议与管理。我的答案是先通过阅读企业文化方面的经典书籍来拓展自己身为管理者、企业老板的知识面&#xff0c;然后再根据自家企业的实际情况展…

作者头像 李华
网站建设 2026/4/23 11:29:31

30秒创建!Ubuntu+Python+VSCode开发沙箱

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建开箱即用的Python开发环境配置&#xff1a;1. 安装Python 3.11 2. 配置VSCode Server 3. 预装Jupyter Lab 4. 设置代码自动格式化。要求生成可直接在InsCode平台运行的docker-c…

作者头像 李华
网站建设 2026/4/19 15:26:09

java计算机毕业设计书网 纸电融合知识共享平台 全域图书流转中枢

计算机毕业设计书网rmc539&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。纸质书在角落落灰&#xff0c;电子书躺在硬盘“吃灰”&#xff0c;读者找不到下一本&#xff0c;书店回…

作者头像 李华
网站建设 2026/4/20 13:07:50

LLM 工具调用的范式演进与认知模型集成

引言&#xff1a;为什么 LLM 需要工具&#xff1f; 大语言模型的核心能力是文本生成&#xff0c;但其存在三个根本性限制&#xff1a; 限制类型具体表现工具调用如何解决知识时效性训练数据截止于某时间点调用搜索引擎/API 获取实时信息计算精确性浮点运算、复杂数学易出错调用…

作者头像 李华
网站建设 2026/4/8 19:25:21

StateFlow

StateFlow 是 Kotlin 协程库中提供的状态流,属于冷流(Cold Stream)的优化变种,核心用于持有并发射单一、可观察的状态,是 Android 开发中实现 MVVM 架构状态管理的核心工具之一。 一、核心特性 持有当前状态:始终保存最新的状态值,新订阅者会立即收到当前最新值(区别于…

作者头像 李华