vue2 中的v-model

v-model本质上是一个语法糖,如下代码

<input v-model="test">
<!--上面代码本质上就是下方代码-->
<input :value="test" @input="test = $event.target.value">

因此,对于一个带有 v-model 的组件(核心用法),它应该如下:

带有v-model的父组件通过绑定的value值(即v-model的绑定值)传给子组件,子组件通过 prop接收一个 value;
子组件利用oninput事件实时通过 $emit 触发父组件input 事件,并传入新值value给父组件;

父组件

<template><div><child v-model="msg" @input="msg = $event.target.value" /><!--<child :value="msg" @input="msg = $event.target.value" />--></div>
</template>
<script>
import child from './components/Child.vue'
export default {components: {child},data() {return {msg: ''}}
}
</script>

子组件child

<template><input type="text" :value="modelValue" @input="handleInput">
</template>
<script>
export default {name: 'Child',props:['value'],data() {return {modelValue: this.value}},methods: {handleInput(event) {this.$emit('input', event)}}
}

vue3中的 v-model

vue3中的v-model默认绑定的不是value,而是modelValue,接收的方法由input改为@update:modelValue。

<template><child v-model="msg" /><p>{{msg}}</p>
</template><script lang="ts">
import { defineComponent,ref} from 'vue';
import child from './components/child/index.vue'export default defineComponent({name: 'App',components:{child},setup(){const msg = ref('1')return{msg}}
});
</script>
<template><input type="text" :value="modelValue" @input="onInput">
</template>
<script lang="ts">
import {defineComponent} from 'vue'
export default defineComponent({name:'ChildInput',props:{modelValue:{type:String}},setup(props, context){const onInput = (e: Event) =>{context.emit('update:modelValue',e.target.value)}return{onInput}}
})
</script>

vue3中自定义组件使用v-model相关推荐

  1. vue2、vue3中自定义v-model的使用和区别

    在我们的日常开发中,时常需要写一些自定义组件,而其中可能就会使用到v-model,v-model是Vue中的一个指令,用来实现数据的双向绑定,实现数据.视图更新,v-model是一个语法糖,,我们可以 ...

  2. 补充记录vue3中rrweb-player组件实现网页录屏的一个BUG解决

    项目场景: vue3中rrweb-player组件实现网页录屏功能 问题描述 提示:这里描述项目中遇到的问题: 录制的视频会重复记录录制中这个按钮的状态,每打开一次开始录制视频中就会多一个按钮,bug ...

  3. 手把手教你在 Vue3 中自定义指令

    TienChin 项目前端是 Vue3,前端有这样的一个需求:有一些前端页面上的按钮要根据用户的权限来决定是否展示出来,如果用户具备相应的权限,那么就展示对应的按钮:如果用户不具备对应的权限,那么按钮 ...

  4. 微信小程序中自定义组件

    文章目录 小程序项目 app.json pages/index/index.wxml pages/index/index.wxss pages/index/index.js 自定义组件 compone ...

  5. vue中自定义组件的命名规则

    问题 vue中自定义的组件名在html中字母大写会报错 html: js: 自定义的组件中字母可以大写,但是在html标签中,字母有大写的就会报错 原因 这是因为html中不区分大小写,所以在html ...

  6. 《十》微信小程序中自定义组件的组件模板和样式

    组件 WXML 模板: 组件模板的写法与页面模板相同. 模板数据绑定: 与普通的 WXML 模板类似,可以使用数据绑定. <!-- custom-component.wxml --> &l ...

  7. vue中自定义组件“ directives “的常用功能

    directives 可以全局使用以及组件内部定义使用 directives是什么? 注册自定义的指令 directives有什么作用? 对普通 DOM 元素进行底层操作,就会用到自定义指令 dire ...

  8. vue3中的组件间通信

    Vue3.0组件通信 父给子传值 props $attrs给子组件传值 $parent provide / inject 子组件向父组件传递 emit 父给子传值 props 我们通过在父组件引用子组 ...

  9. angular中自定义组件实现双向绑定

    使用get,set关键字 get返回父组件变化后的值 set为组件值产生变化后父组件改变 import {Input, Output } from '@angular/core'; ........ ...

最新文章

  1. lightoj 1014
  2. ubuntu16.04 terminal无法正常运行
  3. 《软件测试的艺术》读书笔记 - 1
  4. Hive 高级编程??深入浅出学Hive
  5. 构造方法注入和设值注入有什么区别?
  6. sqlalchemy(二)高级用法
  7. 动态规划 —— 状压 DP
  8. 浅谈Stein算法求最大公约数(GCD)的原理及简单应用
  9. 使用C#进行点对点通讯和文件传输(通讯基类部分+发送接收
  10. 【翻译自mos文章】Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port?...
  11. 腾讯视频 android 2倍,腾讯视频多倍速播放产品设计小结
  12. STM32f407---oled屏幕配套取字模软件使用
  13. php gdiplus,GdiPlus[44]: IGPGraphics (三) 关于文本绘制续 - IGPStringFormat
  14. matlab vl_feat,matlab 安装 vl_feat
  15. VS2015彻底卸载干净
  16. 计算机专业复试面试题难吗,计算机考研复试,别想的太难了!
  17. 前往庄园失败 当前服务器不稳定,摩尔庄园手游登录不了是怎么回事 摩尔庄园手游登录失败怎么办...
  18. 【matplotlib】画图怎样将中文为宋体-英文为新罗马字体
  19. 核磁共振基本原理——核磁共振现象
  20. 冬季黄山旅游费用明细

热门文章

  1. 教你几个生活中较常用的小窍门
  2. 传奇代码研究 极品机率...
  3. 给女朋友的c语言程序,我想给一个女生表白 怎么用c语言表白
  4. 213. 打家劫舍 II。
  5. python gridview_Gridview表格控件
  6. Dungelot游戏思考
  7. 屏蔽PrintScreen键
  8. HTML DOM confirm() 方法
  9. 计算机三级及内容是什么意思,计算机三级的内容是什么
  10. 教你几个 Java 编程中的奇技淫巧