跳到正文
贡献者

Form 表单

McForm 是表单的父组件:提供原生 <form> 语义、字段注册上下文、提交入口和整体状态。输入组件(TextField、Select、Switch 等)是它的直接子组件,会自动注册到当前 Form。

表单展示与校验是两层职责:先用 Form 组织字段和操作区,再按需启用统一校验机制。标准输入组件已经内置 McFormField 展示层,不要再把它们包进第二层 McFormField;需要包装原生或自定义控件时才直接使用 FormField

基础用法

下面只展示父组件、字段和操作区的组合,不引入规则或错误状态。

父组件负责 formfieldset 语义、disabled 级联以及插槽状态参数;字段组件负责自己的标签、控件、提示和错误展示。

验证机制

校验通过输入组件的 requiredruleserrorMessagesvalidateOn 参与;Form 只负责聚合这些字段并提供整体操作。

valid=true · dirty=false · validating=false · 尚未校验

API

McForm Props

名称类型默认说明
modelValuebooleantrue聚合后的有效状态
validateOninput | blur | submit | lazyinput默认校验时机
fastFailbooleanfalse提交校验遇到首个无效字段即停止
disabledbooleanfalse禁用全部字段

Events

名称参数说明
update:modelValueboolean有效状态变化
update:validatingboolean异步校验状态
update:dirtyboolean任一字段已交互
submit{ valid, errors }原生 submit 后的校验结果
validate()-返回 { valid, errors }
reset()-重置值与校验
resetValidation()-只清空校验状态

所有标准输入组件共享同步/异步 rules;异步竞态只采纳最后一次结果。reset() 恢复挂载时捕获的初值并清空校验,不会立刻按 validateOn: input 再跑一遍。validateOn 支持 inputblursubmitlazy。布尔字段的 required 只把 true 视为已填;空数组 errorMessages 不算错误。字段必须放在 McForm 内才会注册,插件级 Form 服务不会自动收集它们。McRadioGroup 作为单一字段注册,内部的 McRadio 不会再各注册一次。

最后更新于

MIT Licensed · Ore UI 风格 Vue 3 组件库