自定义表单元素组件内容变化触发ElForm重新校验

news/2024/9/24 10:17:23/

对于下图中“付费类型”怎么实现有很多种方式,我能想到的是以下两种:

  1. Element Plus的RadioButton
  2. 自定义组件
    在这里插入图片描述

1. RadioButton

它本质上就是一个单选组件,它跟Element Plus的RadioButton本质上没有区别,无非是外观上的差别。那么我们就可以复用RadioButton的逻辑功能,而通过修改样式的方式达到上图的视觉效果。其实,我一般都选则第二种方式,自定义组件,原因是直到今天我才想到可以用RadioButton来实现:(
在这里插入图片描述

2. 自定义组件

写一个FeeTypeSelector的组件,它的属性大概是这样的

interface FeeTypeSelectorProps {modelValue: string;data: FeeTypeSelectorItem[]; // 可选项的数据
}interface FeeTypeSelectorItem {value: string;text: string;....
}...

通过接收参数modelValue和触发update:modelValue让FeeTypeSelector组件支持v-model。至此这个组件就大致上写好了。把它放入带有规则的FormItem中,也能正常的校验。不过我今天发现,Element Plus的表单输入组件在有校验错误后再次输入正确的值后校验错误会自动消失,而不需要点击提交按钮调用form.validate方法,而上面的自定义组件就不能。其实以前也知道有这个问题,当时就没当回事,今天下定决心要去解决这个问题,就去翻看了Element Plus的源码,直接说结果吧,过程也没人爱看。
自定义组件内部watch一下modelValue,变化的话调用FormItem的validate方法,代码如下:

import { useFormItem } from 'element-plus'
const { formItem } = useFormItem()
watch(() => props.modelValue, () => {if (props.validateEvent) {formItem?.validate?.('change').catch((err) => console.warn(err))}
})

本来是想介绍一下在重新输入后怎么消除自定义组件的报错信息的,经过这一番思考,我的想法有了变化,优先借助Element Plus现有的表单元素组件(即方法1),如果真的不能实现了我才会自定义表单元素组件

如果对你有帮助,帮忙点赞哈,嘻嘻:)


http://www.ppmy.cn/news/1450546.html

相关文章

SpringBoot配置HTTPS及开发调试

前言 在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享 后端配置 …

macOS asdf 工具版本管理器

一、区别于Homebrew "asdf"和"Homebrew"都是用于管理软件包的工具,但它们的主要区别在于适用范围和管理的内容: 1.适用范围: asdf:是一个通用的版本管理工具,可以用来管理多种不同的软件工具和…

git branch与tag操作

1 git新建本地分支并推送到远程 新建本地分支,并切换到新分支上 git checkout -b 新分支名新建一个远程分支,名字一样 git push origin 新分支名:新分支名将本地分支和远程分支合并关联 git push --set-upstream origin 新分支名2 使用Git添加Tag 2…

2024五一数学建模A题思路代码与论文分析

2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc# 2024五一数学建模A题钢板最优切割路径问题需要建立的模型和算法: 图论 最短路径算法(Dijkstra算法、Floyd算法等) 动态规划 网格化离散建模 …

抖音视频评论区用户采集 根据视频链接批量获取用户信息

要批量获取抖音视频评论区用户的信息,可以通过抖音开放平台的接口来实现。 首先,你需要在抖音开放平台注册开发者账号,并创建一个应用。然后,使用抖音开放平台提供的接口,可以根据视频链接获取视频的详细信息&#xf…

spring boot 启动流程详解

主启动类 SpringBootApplication MapperScan("com.example.mapper") public class StableBootApplication {public static void main(String[] args) {SpringApplication.run(StableBootApplication.class,args);} }SpringApplication类中有个静态run()方法&#xf…

使用通义千问,为汽车软件需求生成测试用例

前几篇文章我们介绍了,分析需求,生成代码,生成流程图,序列图等汽车软件开发设计中的常见工作步骤,今天我们讲下汽车软件测试中怎么使用大模型,如何用千问生成用例,具体操作步骤如下: 提示词: 车速自动闭锁 使能条件(a&b&c&d&e&f) a. 电源状态…

小程序地理位置接口权限直接抄作业

小程序地理位置接口有什么功能? 随着小程序生态的发展,越来越多的小程序开发者会通过官方提供的自带接口来给用户提供便捷的服务。但是当涉及到地理位置接口时,却经常遇到申请驳回的问题,反复修改也无法通过,给的理由也…