vue使用v-model实现父子组件传值之子父组件同步更新方式

 更新时间:2026年05月19日 09:53:17   作者:冰凉小脚  
文章主要介绍了Vue2和Vue3中父子组件间通过props和emit实现双向绑定的方法,Vue2中,子组件通过props接收值,通过$emit触发change事件修改父组件数据;Vue3中方法类似,但语法略有不同

基于vue2和vue3两个版本的框架略显不同,所以我分开的来讲:

1、vue2

子组件(my-input.vue):

<template>
    <input type="text" :value="name" @input="inputChange" />
</template>

<script>
export default {
    model: {
        prop: 'name',
        event: 'change'
    },
    props: {
        name: {
            type: String,
            default: ''
        }
    },
    methods: {
        inputChange(e) {
            this.$emit('change', e.target.value)
        }
    },
}
</script>

父组件:

<template>
    <my-input v-model="name" />
</template>

<script>
import MyInput from './my-input.vue'
export default {
    data() {
        return {
            name: '张三'
        }
    },
}
</script>

子组件:

  1. 使用model的name和event来指定变量名和修改事件名;
  2. 通过props接收一个值(举例name),
  3. 通过this.$emit执行change事件进行对数据进行修改,实现数据双向绑定功能;

父组件:组件直接使用 v-model绑定变量即可

2、vue3

子组件:

<template>
    <input :value="modelValue" @input="updateValue" />
</template>

<script setup>
import { defineProps, defineEmits } from 'vue'

const props = defineProps({
    modelValue: {
        type: String,
        required: true
    }
})
const emits = defineEmits(['update:modelValue'])

const updateValue = (event) => {
    emits('update:modelValue', event.target.value)
}
</script>

父组件:

<template>
    <div>
        <my-input type="text" v-model="name" />
    </div>
</template>

<script setup>
import MyInput from './my-input.vue'
let name = ref('')
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue实现div高度可拖拽

    vue实现div高度可拖拽

    这篇文章主要为大家详细介绍了vue实现div高度可拖拽,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • vue axios数据请求及vue中使用axios的方法

    vue axios数据请求及vue中使用axios的方法

    axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,在vue中数据请求需要先安装axios。这篇文章主要介绍了vue axios数据请求及vue中使用axios的方法,需要的朋友可以参考下
    2018-09-09
  • vue 列表页跳转详情页获取id以及详情页通过id获取数据

    vue 列表页跳转详情页获取id以及详情页通过id获取数据

    这篇文章主要介绍了vue 列表页跳转详情页获取id以及详情页通过id获取数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 在Vue3 + Electron项目中图片缩放后无法拖动的问题分析与解决

    在Vue3 + Electron项目中图片缩放后无法拖动的问题分析与解决

    这篇文章主要介绍了在Vue3+Electron项目中,试卷查看弹窗的图片放大后无法拖动查看不同区域的问题,通过检查缩放功能、拖动事件、事件绑定、全局事件监听器、PointerEvents、CSS属性、边界计算等多个阶段,最终解决了问题,需要的朋友可以参考下
    2025-11-11
  • vue2和vue3中provide/inject的基本用法示例

    vue2和vue3中provide/inject的基本用法示例

    Vue中的provide/inject是一种组件间通信的方式,它允许父组件向子组件传递数据,而不需要通过props或事件来实现,下面这篇文章主要给大家介绍了关于vue2/vue3中provide/inject的基本用法的相关资料,需要的朋友可以参考下
    2023-04-04
  • 使用element-ui实现行合并过程

    使用element-ui实现行合并过程

    这篇文章主要介绍了使用element-ui实现行合并过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue中axios的post请求,415错误的问题

    vue中axios的post请求,415错误的问题

    这篇文章主要介绍了vue中axios的post请求,415错误的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue自定义全局Toast和Loading的实例详解

    Vue自定义全局Toast和Loading的实例详解

    这篇文章主要介绍了Vue自定义全局Toast和Loading,需要的朋友可以参考下
    2019-04-04
  • 在vue组件中使用axios的方法

    在vue组件中使用axios的方法

    下面小编就为大家分享一篇在vue组件中使用axios的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue-devtools的安装与使用教程

    vue-devtools的安装与使用教程

    vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率,这篇文章主要介绍了vue-devtools的安装与使用教程,需要的朋友可以参考下
    2023-03-03

最新评论