Vue 3 表单校验复用核心是封装 useFormValidation 组合函数,统一管理响应式数据、错误状态、校验规则(纯函数)、单字段/全量验证及动态联动逻辑,并深度集成 Element Plus 的表单能力与异步校验。

Vue 3 中表单校验配合组合式函数复用,核心是把校验规则、验证动作、错误状态从组件中抽离出来,封装成独立的、可按需导入的 useFormValidation 类函数。它不是简单搬运 rules 配置,而是统一管理数据、规则、触发时机和反馈状态。
封装校验逻辑的组合函数
创建 src/composables/useFormValidation.ts,返回响应式表单数据、错误对象、验证方法和提交控制:
- 用 reactive 管理表单字段(如
email,password) - 用 ref 或 reactive 存储各字段错误信息(
errors.email) - 将规则定义为纯函数(
(value) => boolean | string),便于测试和复用 - validate() 方法遍历字段执行校验,并同步更新 errors
- 支持 validateField(key) 单字段校验,适配 Element Plus 的 blur/change 触发
复用预定义的校验规则模块
把通用规则(手机号、邮箱、身份证等)抽成独立文件,例如 src/validators/index.ts:
将静态 Vue 页面(index.vue)改造为动态页面(Custom.vue);稿源仅限 index.vue、其引用的 CSS 与资源路径,禁止参考仓库内其他文件。Invoke when user wants to transform a static Vue page into a dynamic data-driven page with Element UI components.
- 导出正则常量(
patterns.mobile)和语义化校验器(validators.mobile('手机号')) - 规则函数返回标准 Element Plus rule 对象,可直接用于
:rules绑定 - 在组合函数内部或组件 setup 中按需引入,避免重复写
{ pattern: /.../, message: '...' }
支持动态与联动校验
复杂场景下校验依赖其他字段值,比如“选择企业类型时公司名称必填”:
- 组合函数接收表单数据对象作为参数(
form: Ref)> - 校验函数内直接读取
form.value.type判断是否启用额外规则 - 用 watch 监听关联字段变化,自动触发对应字段重校验
- 避免在模板中写大量
v-if控制 rules,逻辑全部收口在组合函数内部
与 Element Plus 表单深度集成
组合函数不只做校验,还要对接 UI 框架能力:
- 返回 elFormRef,供外部调用
validate()或resetFields() - 暴露 submitHandler,内部自动调用
elFormRef.validate()并处理 loading 状态 - 错误信息直接绑定到
,无需额外 computed - 支持异步校验(如用户名唯一性),通过 Promise +
cb()回调方式兼容 Element Plus validator 格式
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










