使用useVModel简化 Vue 组件中 v-model 的实现

news/2025/2/22 23:06:30

使用useVModel简化 Vue 组件中 v-model 的实现

  1. 基本原理
// VueUse的useVModel简化实现
function useVModel(props, propName, emit) {
  return computed({
    get: () => props[propName],
    set: (value) => emit(`update:${propName}`, value)
  })
}使用useVModel简化 Vue 组件中 `v-model` 的实现
  1. 具体应用
// 在子组件(BusDevDetail)组件中
const isShow = useVModel(props, "isDetailDrawerShow", emit);

// 等价于手动实现:
const isShow = computed({
  get: () => props.isDetailDrawerShow,
  set: (value) => emit("update:isDetailDrawerShow", value)
});
  1. 功能实现
<!-- 父组件 -->
...
<BusDevDetail v-model:isDetailDrawerShow="isDetailDrawerShow" />
...
<!-- 子组件 BusDevDetail.vue -->
<template>
	...
	<el-drawer v-model="isShow">
  	<!-- 抽屉内容 -->
	</el-drawer>
	...

    <template #footer>
      <div style="flex: auto">
        <el-button plain @click="cancel">取消</el-button>
      </div>
    </template>
</template>

<script>
...
const cancel = () => {
  isShow.value = false;
};
...
</script>
  1. 主要作用
  • 实现双向绑定:父组件的 isDetailDrawerShow 与子组件的 isShow 保持同步
  • 简化代码:不需要手动编写 get/set
  • 自动处理事件发射:当 isShow 改变时,自动触发 update:isDetailDrawerShow 事件
  1. 使用场景
  • 抽屉/对话框的显示隐藏控制
  • 表单输入的双向绑定
  • 任何需要父子组件数据同步的场景

http://www.niftyadmin.cn/n/5862828.html

相关文章

C语言03

21-5.2 一维数组 22-5.3 数组访问越界与数组的传递 调用自定义的print函数时&#xff0c;只会打印前两个数值&#xff0c;因为传递的大小是指针为八个字节&#xff0c;不会传递原数组&#xff0c;并且自定义的数组大小不用定义&#xff0c;因为不会传递过去&#xff0c;面试官…

数据结构:哈希表(二)

目录 一、哈希表 1、概念 二、哈希冲突 1、概念 2、冲突避免 &#xff08;1&#xff09;哈希函数设计 &#xff08;2&#xff09;负载因子调节 3、冲突解决 &#xff08;1&#xff09;闭散列 1、线性探测 2、二次探测 &#xff08;2&#xff09;开散列 4、哈希桶实…

《ArkTS详解:鸿蒙生态中的高效开发语言》

文章目录 一、ArkTS的起源与背景二、ArkTS的核心特性三、ArkTS与其他编程语言的对比四、ArkTS的开发环境与工具五、ArkTS的实际应用案例六、ArkTS的未来发展与展望 一、ArkTS的起源与背景 ArkTS是华为公司为鸿蒙生态系统量身打造的一种高效开发语言&#xff0c;其起源可以追溯…

聊一聊提升测试用例覆盖率需要从哪几方面入手?

目录 一、需求覆盖&#xff1a;确保无遗漏 二、代码覆盖&#xff1a;工具辅助优化 三、路径覆盖&#xff1a;逻辑深度遍历 四、边界值覆盖&#xff1a;防御性测试设计 五、异常场景覆盖&#xff1a;模拟真实故障 六、兼容性覆盖&#xff1a;全环境验证 七、性能覆盖&…

C语言(22)

字符函数和字符串函数 7.strcpy/strcat/strcmp与strncpy/strncat/strncmp区别 前者是长度不受限制的字符串函数&#xff0c;后者是长度受限制的字符串函数 8.strncpy的使用 char * strncpy ( char * destination , const char * source , size_t num ) ; //拷贝num个字符从…

java简单实现请求deepseek

1.deepseek的api创建 deepseek官网链接 点击右上API开放平台后找到API keys 创建APIkey&#xff1a; 注意&#xff1a;创建好的apikey只能在创建时可以复制&#xff0c;要保存好 2.java实现请求deepseek 使用springbootmaven 2.1 pom文件&#xff1a; <?xml version&…

科技助力汽车保险迎接行业大变革

随着科技的飞速发展&#xff0c;汽车行业正经历一场前所未有的变革。智能网联、新能源汽车的兴起&#xff0c;以及自动驾驶技术的日益成熟&#xff0c;都为汽车保险行业带来了新的挑战和机遇。本文将探讨汽车保险行业如何利用科技力量&#xff0c;应对行业变革&#xff0c;实现…

Linux6-进程消亡、

一、进程补充 函数指针取别名 typedef void (*tmp) vdoid;//将所有的void &#xff08;*&#xff09;void数据类型取别名为tmp 1.进程消亡&#xff1a; 进程退出&#xff1a; 1.1主函数调 return 0&#xff1b; 1.2调 exit(库函数)\_exit\Exit&#xff08;系统调用&#xff0…