目录
- 前言
- 1. 基本知识
- 2. Demo
- 3. 实战
前言
Java基本知识:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【Java项目】实战CRUD的功能整理(持续更新)
奔着从实战中出发剖析基本知识
1. 基本知识
a-form-item 是 Ant Design Vue 表单组件 中用于:
给控件加 label(标签)
设置 label 和表单控件的布局(labelCol、wrapperCol)
处理验证状态(success/error/warning 等)
配合 v-decorator 来实现 表单数据管理 + 校验
常用属性(最重要)
| 属性 | 说明 |
|---|---|
label | 表单项左侧标题 |
labelCol | label 的布局(栅格宽度) |
wrapperCol | 控件区域布局 |
help | 自定义帮助信息 |
validateStatus | 验证状态:success / warning / error / validating |
required | 是否标记为必填(只显示红 *,不代表校验规则) |
extra | 额外说明文字 |
简易的例子
<a-form-itemlabel="用户名":labelCol="{ span: 5 }":wrapperCol="{ span: 16 }"validateStatus="error"help="用户名不能为空">2. Demo
常用的Demo写法如下
输入用户名、手机号
校验必填 + 正则
提交收集数据
自动显示错误提示
<template><a-form:form="form"@submit.prevent="handleSubmit"><!-- 用户名 --><a-form-itemlabel="用户名":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入用户名"v-decorator="['username', { rules: [ { required: true, message:'用户名不能为空'}, { min: 3, message:'至少 3 个字符'} ] } ]"/></a-form-item><!-- 手机号 --><a-form-itemlabel="手机号":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入手机号"v-decorator="['mobile', { rules: [ { required: true, message:'请输入手机号'}, { pattern: /^1\d{10}$/, message:'手机号格式不正确'} ] } ]"/></a-form-item><!-- 提交按钮 --><a-form-item:wrapperCol="{ span: 16, offset: 5 }"><a-buttontype="primary"html-type="submit":loading="loading">提交</a-button></a-form-item></a-form></template><script>exportdefault{name:"UserFormDemo",beforeCreate(){this.form=this.$form.createForm(this);// 必须创建 form},data(){return{loading:false,// label 和控件 的布局labelCol:{span:5},wrapperCol:{span:16},};},methods:{handleSubmit(){this.form.validateFields((err,values)=>{if(!err){console.log("提交的数据:",values);this.$message.success("提交成功!");}});}}};</script><stylescoped></style>🧩 结构分析(核心写法)
1️⃣ 绑定 form
beforeCreate(){this.form=this.$form.createForm(this);}👉 这是 AntD Vue2 的黑科技,必须写。
2️⃣ 使用表单布局(labelCol & wrapperCol)
labelCol:{span:5},wrapperCol:{span:16},让 label 占 5 列,控件占 16 列。
3️⃣ v-decorator 管理字段 + 校验规则
标准语法:v-decorator="['字段名', 配置规则]"
示例:
v-decorator="['username',{rules:[{required:true,message:'不能为空'}]}]"4️⃣ 提交表单统一校验
this.form.validateFields((err,values)=>{if(!err){console.log(values)}})⚡ 不需要手写错误提示,a-form-item 会自动显示
3. 实战
项目中实战的代码模块经典结构如下:
<a-form-itemlabel="用户姓名":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入用户姓名"v-decorator.trim="['username', validatorRules.username]"/></a-form-item>Demo 使用的是:
labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }在小屏:label 和控件都占 24 列(换行)
在大屏:label 占 5,内容占 16(共 24 栅格)
👉 这是 AntD 的 响应式栅格布局方式
validatorRules.username(校验规则示例)
代码里面是:
username: { rules: [ { required: true, message: '请输入用户名称!' } ] }常见校验如下:
| 规则 | 示例 |
|---|---|
| required | { required: true } |
| min/max 长度 | { min: 3, max: 20 } |
| 正则 pattern | { pattern: /^[A-Za-z]+$/ } |
| 自定义校验 | { validator: this.myValidator } |