优雅的表单校验

优雅的进行表单校验

数据表单校验在我们日常开发中经常要用到,而身为一名前端开发人员你是否还在这样进行数据的校验:

每当我这样进行表单校验时,我都会感觉到浑身不爽,又或者是觉得这样校验数据不优雅

而后端开发中的DTO思想会让我觉得非常舒适,如:

首先定义了一个DTO对象(定义一些校验规则),然后在Controller中需要校验的地方注入了这个对象,所以当一个请求进来时会自动对入参进行校验

这样进行数据校验的优势是,易于扩展,当我们需要变动的时候,只需要关注Rule规则以及传入的校验数据 user,而不会影响到其他地方的代码。

其实,在 ElementUI 中已经实现了这种模式,它就是Form表单校验。

ElementUI中Form校验

在使用ElementUI时我们经常这样进行表单校验:

其实,是在ElementUI Form-item组件内引用了一个数据校验库:async-validator

这个库的使用也非常简单:

原理:首先创建了一个descriptor规则对象,然后实例化一个Schema对象并传入descriptor对象,通过返回的对象实例调用validate方法进行校验并传入需要校验的数据,最后在回调函数中执行校验结果判断

而Form组件只是结合async-validator进行了更深层次的封装,易于我们开发效率,使我们在开发过程中只需关注校验的数据modle以及rules规则。

Form组件对校验的时机做了多种选择:

一种,通过trigger属性传递触发的事件

二中,通过调用validate方法

组件中校验失败的红框提示只是Form-item在校验失败后样式上的更改

这样,我们就能通过async-validator库封装一个优雅的且利于自己开发效率的组件使用了。

如果觉得内容对你有帮助或者有所成长,麻烦请点个小小的赞加收藏,谢谢。 ^o^

相关推荐
狂炫冰美式12 分钟前
人均配了AI, 为什么公司还是没变快? 🤔 本质还是分布式系统问题
前端·后端·架构
铁皮饭盒1 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
乘风gg1 小时前
多 Agent 不是万能的!搞懂这 5 个原则,少走 1 年弯路!
前端·agent·ai编程
猩猩程序员2 小时前
Vercel 推出 Agent 框架 Eve:让 AI Agent 像写 Web 应用一样简单
前端
小林ixn2 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
爱读源码的大都督2 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
爱勇宝2 小时前
Claude Code 被曝暗藏“隐形检测”代码:封代理不是最可怕的,可怕的是你根本不知道它在干什么
前端·后端·程序员
小牛不牛的程序员3 小时前
我用 Claude Code 半天撸完了一个完整网站,AI 编程到底提升了多少效率?
前端
东风破_3 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript
巴勒个啦3 小时前
D3.js 入门实战:用力导向图可视化项目依赖关系
javascript