Vue3.4新增的defineModel的使用

news2024/11/23 17:24:30

define-model的作用

在3.3及之前的版本,父子组件之间的通讯,一直都是靠props(父传子)和emit(子传父)来实现。而define-model整合了这两种方法,只需要在父组件中定义define-model的方法,子组件中进行声明,参数可以是一个变量,也可以是一个函数(响应式的)。一旦该变量发生改变,父子组件拿到的都是最新值,这就是define-model的作用。

使用情况

上文也讲过,对于props和emit联合起来的情况都可以使用,但是正常情况下对于普通变量,还是用props与emit更加熟练。且define-model对于嵌套的比较深的变量,踩坑的方式有很多种。

但是对于函数类型的变量,使用define-model会比较方便。

使用实例

需求:
在这里插入图片描述
由于数据结构的问题,单独把表单给封装了。(当事人表示非常后悔)这就是本实例的环境。遇到的问题是,父组件的modal点击确定的时候,需要调用子组件的校验表单方法。并且如果有问题需要抓取,没问题才能点击确定之后在父组件中发起修改(添加)数据的请求。这里的组件库是ant。

这里抛出一种情况。比如父组件需要在某时刻调用子组件的一些方法。我们可以先在父组件中定义一个响应式变量,用来定义一个函数。

  const rulesVerify = ref();

然后再通过define-model的方式传给子组件:

    <set-proportion
      ref="child"
      v-model:rulesVerify="rulesVerify"
    ></set-proportion>

子组件内部需要声明这个变量,接受类型是函数类型。

  const rulesVerify = defineModel('rulesVerify', {
    type: Function as PropType<() => Promise<void>>,
  });

  const verifyForm = async () => {
    const res = await formRef.value.validateFields();
    return res;
  };

  rulesVerify.value = verifyForm;

父组件调用:

 // 添加
  const handleUpdate = async () => {
    await rulesVerify.value().then((data) => {
      console.log(data);
    });

    await DimocraticApi.saveOrUpdatePlanInfo(updateForm.value);
    addModal.value = false;
    refreshTableData.value?.();
  };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1846560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

肇庆具有资质等保机构有几家?在哪里?

在近期揭晓的“中国百强城市排行榜”中&#xff0c;广东省共有12个城市入选&#xff0c;其中包括肇庆。肇庆-山水之城&#xff0c;文化之韵&#xff0c;端砚之乡&#xff0c;岭南瑰宝&#xff0c;是一个非常有发展的城市&#xff0c;企业多多。这不不少肇庆企业在问&#xff0c…

MySQL——触发器(trigger)基本结构

1、修改分隔符符号 delimiter $$ $$可以修改 2、创建触发器函数名称 create trigger 函数名 3、什么样在操作触发&#xff0c;操作哪个表 after &#xff1a;……之后触发 before &#xff1a;……之后触发 insert &#xff1a;……之后触发 update &#xff1a;……之后触…

Flutter【组件】点击类型表单项

简介 flutter 点击表单项组件&#xff0c;适合用户输入表单的场景。 点击表单项组件是一个用户界面元素&#xff0c;通常用于表单或设置界面中&#xff0c;以便用户可以点击它们来选择或更改某些设置或输入内容。这类组件通常由一个标签和一个可点击区域组成&#xff0c;并且…

轻松ChatGPT的使用技巧,让你的生活更智能

ChatGPT&#xff0c;由OpenAI的GPT-3.5架构支持&#xff0c;已经彻底改变了我们与人工智能互动的方式。这个先进的语言模型被证明是一种多功能的工具&#xff0c;能够处理各种对话任务。不过&#xff0c;用户可以通过一些技巧和窍门&#xff0c;进一步提升使用ChatGPT的体验&am…

世界是软件定义的 - 正如硬件公司所证明的那样

很难相信&#xff0c;马克安德森&#xff08;Marc Andressen&#xff09;在13年前写下了他著名的博客&#xff0c;题为“软件正在吞噬世界”。在这篇文章中&#xff0c;他谈到了现代软件组织对传统企业造成的破坏。 十三年后&#xff0c;即使面对英伟达的平流层估值&#xff0…

echarts隔行背景色

看了下使用说明&#xff0c;试了半天终于搞对了 参考文档&#xff1a;Documentation - Apache ECharts option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: bar,mar…

代码随想录第30天|贪心算法

122.买卖股票的最佳时机II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得…

装备制造业CRM解决方案

01、数字化转型驱动企业&#xff0c;向“以客户需求驱动创新生产”的智能制造业转变 我国装备制造业经过多年的发展&#xff0c;取得了令人瞩目的成就&#xff0c;形成了门类齐全、具有相当规模和一定水平的产业体系&#xff1b;主要包含通用设备、专用设备、电气机械、交通运…

Adobe Illustrator 矢量绘图软件下载,Ai 2024最新版获取!

Adobe Illustrator&#xff0c;无论是艺术品、图标还是海报等设计作品&#xff0c;Adobe Illustrator都能以超凡的表现力展现出设计师们的创意与才华。 近年来&#xff0c;随着人工智能技术的迅猛发展&#xff0c;各行各业都纷纷将这一技术引入自身领域&#xff0c;以提升工作效…

白驹过隙,沧海桑田

01. 机缘 今天是我加入CSDN的第2620天&#xff0c;是我成为创作者的第1024天。2021 年 08 月 25 日我在这里分享了人生中第一篇技术文章 springboot 签名验证。 现在在回看这篇文章还能感觉到当时的青涩和技术的薄弱&#xff0c;后面每一篇文章的输出可能都是在不断的学习和进…

PgSQL-添加列、字段的注释

mysql是&#xff1a; 添加列&#xff1a;--alter table 表名 add column 列名 varchar(30);ALTER TABLE p_show ADD COLUMN points VARCHAR(100) COMMENT 所需积分;---------------------------------------------------------------------------------------------添加、修改…

记某大学的一次EduSRC的挖掘

0x1 前言 漏洞由来简述 首先讲下这个漏洞的由来吧&#xff0c;这类漏洞叫做OSS储存桶漏洞&#xff0c;是阿里云OSS存储云安全的漏洞&#xff0c;也是一个相对来讲比较新鲜的安全漏洞。我是在进行对某大学的小程序进行文件上传测试的时候发现返回包的URL里面有“OSS”字段&…

CID引流电商助力3C产品销售腾飞的实践与思考

摘要&#xff1a;随着互联网技术的不断发展和普及&#xff0c;电商行业迎来了前所未有的发展机遇。其中&#xff0c;CID引流电商作为一种新兴的电商模式&#xff0c;为商家们提供了更加精准、高效的拓客之路。尤其在3C产品领域&#xff0c;CID引流电商更是助力其销售腾飞的重要…

描述React Hooks中的useMemo和useCallback的区别和用途。

React Hooks API中的useMemo和useCallback都是用于优化性能的钩子&#xff0c;但它们的用途和工作方式略有不同&#xff1a; 推荐大家看看我过往的文章 useMemo useMemo是一个性能优化钩子&#xff0c;它返回一个记忆化的值。useMemo可以避免在组件渲染时进行昂贵的计算或操作…

Mac电脑FTP客户端推荐:Transmit 5 for Mac 中文版

Transmit 5是一款专为macOS平台设计的功能强大的FTP&#xff08;文件传输协议&#xff09;客户端软件。Transmit 5凭借其强大的功能、直观易用的界面和高效的性能&#xff0c;成为需要频繁进行文件传输和管理的个人用户和专业用户的理想选择。无论是对于新手还是经验丰富的用户…

矿产资源和技术采矿服务的电子课程

我们为Nordgold的矿产资源和技术采矿服务开发了电子课程。基于客户的内部文件&#xff0c;我们创建了课程场景并将其组织成一个学习地图。我们的设计师准备了企业风格的设计布局和视觉效果&#xff0c;使枯燥的数据、表格和图表生动起来。使用Articulate Storyline&#xff0c;…

Java 从 6 到 21 的重要变动回顾

Java 从 6 到 21 的重要变动回顾 Java 自从发布以来&#xff0c;一直是全球最受欢迎的编程语言之一。其不断发展的特性和功能&#xff0c;使得它在各种应用程序中得以广泛应用。从 Java 6 到 Java 21&#xff0c;Java 语言和平台经历了许多重要的变动。本文将深入探讨这些变动…

不出网上线CS的各种姿势(内网横向)

情况一&#xff1a;存在一台中转机器 存在一台中转机器&#xff0c;这台机器出网&#xff0c;这种是最常见的情况。 经常是拿下一台边缘机器&#xff0c;其有多块网卡&#xff0c;用于连接内外网&#xff0c;内网机器都不出网。这种情况下拿这个边缘机器做中转&#xff0c;就…

SpringBoot+Vue物流快递仓库管理系统

物流快递仓库管理是一项非常繁琐复杂的工作&#xff0c;每天要处理大量的单据数据&#xff0c;包括入库、出库、退库、调库等多项货物操作流程。因此&#xff0c;为提高库管工作的质量和效率&#xff0c;就必须根据仓库管理的特点开发库存物流信息系统。 本文立足于物流信息系…

【管理咨询宝藏134】麦肯锡咨询公司为DB物流公司价格体系优化设计方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏134】麦肯锡咨询公司为DB物流公司价格体系优化设计方案 【格式】PDF版本 【关键词】麦肯锡、物流、价格战略、定价体系 【核心观点】 - 与竞争对…