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

vue3的组件v-model(defineModel()宏)

这里展示的是vue3.4版本之前的如何在组件上使用以实现双向绑定 

<template><p>我是子组件</p><input :value="props.modelValue" @input="handelInput"/>
</template><script lang="ts" setup>const props = defineProps({modelValue: {default: '',type: String,}})const emits = defineEmits(['update:modelValue']);cosnt handelInput = (e)=>{emits('update:modelValue', e.target.value);
}
</script>
<template>
<p>我是父组件</p>
<Child v-model="msg"></template><script lang="ts" setup>const msg = ref('v-model调试')
</script>

 v-model 的参数

在 v-model中学到的指定参数,我们可以在单个组件实例上创建多个 v-model 双向绑定。

<template><p>我是子组件</p><input :value="props.msg" @input="handelInput"/><input :value="props.msg2" @input="handelInput2"/
</template><script lang="ts" setup>const props = defineProps({msg: {default: '',type: String,},msg2: {default: '',type: String,},})const emits = defineEmits(['update:msg','update:msg2']);cosnt handelInput = (e)=>{emits('update:msg', e.target.value);}
cosnt handelInput2 = (e)=>{emits('update:msg2', e.target.value);}
</script>
<template>
<p>我是父组件</p>
<Child v-model:msg="msg" v-model:msg2="text"></template><script lang="ts" setup>const msg = ref('v-model调试')const text = ref('v-model多个参数调试')
</script>

从 Vue 3.4 开始,推荐的实现方式是使用 defineModel() 宏:

<!-- Child.vue -->
<template><p>我是子组件</p><div>展示父组件传来的双向绑定值: {{ model }}</div><button @click="update">Increment</button>
</template><script setup>
const model = defineModel()const update =()=>{model.value++
}
</script>
<!-- Parent.vue -->
<template><p>我是父组件</p><Child v-model="countModel" />
</template>
<script lang="ts" setup>const countModel = ref(0)
</script>

defineModel() 返回的值是一个 ref(所以使用的时候要.value)。它可以像其他 ref 一样被访问以及修改,不过它能起到在父组件和当前变量之间的双向绑定的作用

上面还讲到带参的v-model,那么defineModel如何带参呢:

<!-- MyComponent.vue -->
<template><p>我是子组件</p><input type="text" v-model="title" /><input type="text" v-model="content" />
</template><script setup>
const title = defineModel('title')
const content = defineModel('content')
</script>
<template>
<p>我是父组件</p>
<MyComponent v-model:title="bookTitle"  v-model:content="bookContent"/>
</template>
<script lang="ts" setup>const  bookTitle = ref('bookTitle')const  bookContent = ref('bookContent')
</script>

参考文档:组件 v-model | Vue.js

http://www.lryc.cn/news/525801.html

相关文章:

  • 在 Ubuntu 22.04 上安装 Kubernetes(Kubeadm 安装方式)
  • 2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计
  • Java算法——排序
  • 【Python・机器学习】多元回归模型(原理及代码)
  • mysql数据被误删的恢复方案
  • 使用EasyExcel(FastExcel) 的模板填充报Create workbook failure
  • [C]基础8.详解操作符
  • MySQL篇之对MySQL进行参数优化,提高MySQL性能
  • Vue 3 的 keep-alive 及生命周期钩子
  • ComfyUI实现老照片修复——AI修复老照片(ComfyUI-ReActor / ReSwapper)解决天坑问题及加速pip下载
  • OpenEuler学习笔记(十一):OpenEuler上搭建LAMP环境
  • Mongodb 慢查询日志分析 - 1
  • MySQL面试题2025 每日20道【其四】
  • 微服务学习-Nacos 注册中心实战
  • k8s服务StatefulSet部署模板
  • 07 区块链安全技术
  • Adobe的AI生成3D数字人框架:从自拍到生动的3D化身
  • dfs专题四:综合练习
  • 【线性代数】列主元法求矩阵的逆
  • 大写——蓝桥杯
  • HTML `<head>` 元素详解
  • 一文速通stack和queue的理解与使用
  • Antd React Form使用Radio嵌套多个Select和Input的处理
  • Vue - toRefs() 和 toRef() 的使用
  • Python3 OS模块中的文件/目录方法说明九
  • OpenCV文字绘制支持中文显示
  • opengrok_windows_多工程环境搭建
  • 基于ollama,langchain,springboot从零搭建知识库三【解析文档并存储到向量数据库】
  • Elasticsearch 和arkime 安装
  • git回退