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

Vue 3 中的 `update:modelValue` 事件详解

在 Vue 3 中,update:modelValue​ 事件通常与 v-model​ 指令一起使用,以实现自定义组件的双向数据绑定。以下是对该事件的详细分析:

事件定义

首先,我们需要在组件中定义 update:modelValue​ 事件。可以使用 defineEmits​ 函数来声明组件可以发出的事件:

const emit = defineEmits(['update:modelValue']);
属性定义

接下来,我们需要定义组件接收的 modelValue​ 属性。可以使用 defineProps​ 函数来声明组件的 props:

const props = defineProps({modelValue: {type: Boolean,default: false}
});
创建计算属性

为了实现双向数据绑定,我们可以创建一个计算属性 _modelValue​。这个计算属性的 get​ 方法返回 modelValue​ 的当前值,而 set​ 方法则触发 update:modelValue​ 事件并传递新值:

const _modelValue = computed({get: () => {return props.modelValue;},set: (val) => {emit('update:modelValue', val);}
});
完整示例

以下是一个完整的示例,展示了如何在 Vue 3 中使用 update:modelValue​ 事件实现双向数据绑定:

<script lang="ts" setup>
import { computed } from "vue";const emit = defineEmits(['update:modelValue']);
const props = defineProps({modelValue: {type: Boolean,default: false}
});
const _modelValue = computed({get: () => {return props.modelValue;},set: (val) => {emit('update:modelValue', val);}
});
</script><template><input type="checkbox" v-model="_modelValue">
</template><style lang="scss" scoped>
/* 样式代码 */
</style>
总结

通过使用 defineEmits​ 和 defineProps​ 函数,我们可以轻松地在 Vue 3 组件中实现 update:modelValue​ 事件,从而实现双向数据绑定。这种设置允许组件与 v-model​ 无缝配合,使父组件和子组件之间的数据同步变得更加简单和高效。

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

相关文章:

  • vue3+vite+ts 使用webrtc-streamer播放海康rtsp监控视频
  • QT数据库(四):QSqlRelationalTableModel 类
  • 蓝桥杯刷题——day5
  • YOLO11改进-模块-引入多尺度差异融合模块MDFM
  • vlan和vlanif
  • Apache Kylin最简单的解析、了解
  • MySQL——连接
  • 前端微服务实战:大型应用的拆分与治理
  • Linux shell的七大功能 --- history
  • C++ webrtc开发(非原生开发,linux上使用libdatachannel库)
  • C语言刷题
  • LabVIEW实现RFID通信
  • Linux 网络流量控制 - 实现概述
  • 分布式 令牌桶算法 总结
  • FFMPEG视频转图片
  • docker入门实践---虚拟机环境配置
  • java要防止重复序列化的问题JSON.toJSONString转义问题
  • TS的类型守卫、类型约束实践
  • 文件转曲,限制PDF文件编辑的最佳方案!
  • MySQL系列之数据授权(安全)
  • 用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!
  • Vue vs. React:两大前端框架的深度对比与分析(一)
  • React 进阶深入理解核心概念与高阶实践
  • Linux shell的七大功能 ---自动补齐、管道机制、别名
  • XML 在线格式化 - 加菲工具
  • java_多态的应用
  • Python+OpenCV系列:模版匹配
  • 【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
  • Spring Boot项目使用虚拟线程
  • 实现SpringBoot项目嵌入其他项目