当前位置: 首页 > news >正文

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

基于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>

相关文章:

  • 数据库基础知识点(系列三)
  • 创新NDT解决方案:XARION激光超声系统助力航空航天材料的高效监测
  • xml文件
  • Codeforces Round 1013 (Div. 3)(A-F)
  • 程序化广告行业(36/89):广告投放全流程及活动设置详解
  • MinGW与使用VScode写C语言适配
  • UI前端与数字孪生:打造智慧城市的双引擎
  • Fegin 400错误分析
  • idea 没有 add framework support(添加框架支持)选项
  • [Lc4_dfs] 括号生成 | 组合 | 目标和
  • docker创建registry镜像仓库2.8版本
  • 宝塔面板部署 Laravel 项目无法访问静态资源的解决方法
  • MySQL 进阶语法:函数、约束、多表查询、事务
  • 分支结构- P1424-小鱼的航程-第二十六天
  • 从dev分支checkout出一个functionA分支开发功能
  • SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel
  • 树状数组 3 :区间修改,区间查询
  • K8S学习之基础五十一:k8s部署jenkins
  • Thera图像超分辨率模型使用
  • openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度
  • 手机网站引导页js插件/合肥seo关键词排名
  • 58同城网站建设/怎么弄属于自己的网站
  • 宝和网站建设/庆云网站seo
  • 墙绘网站建设/站长之家 站长工具
  • vs asp动态网站开发教程/网络优化工具
  • 网站建设和钱/廊坊seo外包