antd组件库-表单的使用

antd组件库-表单的使用

1. Form标签上的常用属性

  1. labelCol: { span: number, offset: number } 标签的样式设置(span表示占多少单元的宽度,offset表示偏移多少单元的宽度,宽度与Row, Col的分配类似)
  2. wrapperCol: { span: number, offset: number} 同labelCol
  3. hideRequiredMark: true | false 是否隐藏(*)标志

2. 数据绑定、数据校验

步骤如下:

  1. 导入antd的Form组件:
import {
          
    Form } from antd
  1. 在组件定义最前面使用@Form.create()方法,将Form组件实例拥有的方法注入到props.form中,如:
@Form.create()
export default class XXX extends Component {
          
   }
  1. 设置表单结构:
render () {
          
   
	const {
          
    form: {
          
    getFieldDecorator } } = this.props
	return (
		<Form labelCol={
          
   {
          
    span: 4 }} wrapperCol={
          
   {
          
    span: 20 }}>
			<Form.Item label=用户名>
				{
          
   
					getFieldDecorator (username, {
          
   
						rules: [
							{
          
    required: true, message: 请输入用户名 }
						]
					})(<Input placeholder=请输入用户名 />)
				}
			</Form.Item>
		</Form>
	)
}
  1. 点击按钮进行校验
const {
          
    form: {
          
    validateFields  } } = this.form
// 方式一
validateFields().then(valueObj => {
          
   
	// 此处执行校验成功的逻辑
}).catch(error => console.log(error))
// 方式二
validateFields((error, valueObj) => {
          
   
	if(error) return 
	// 此处执行校验成功的逻辑
})
// 方式三
await validateFields()
// 此处执行校验成功的逻辑

3. 其它使用细节

  1. 数据校验: rule配置校验规则:
字段 可取值 备注 required true 或 false 是否必选 min 数值 字符串类型表示最短字符数,数值表示最小数 max 数值 字符串类型表示最短字符数,数值表示最小数 message 错误提示信息(字符串类型) 校验不通过时的错误提示信息 whitespace true 或 false 如果字段仅包含空格,则校验不通过 validateTrigger ‘onChange’ 校验时机,默认为onChange validator (rule, value, callback) => {} 自定义校验函数(校验通过,调用callback();校验不通过callback(‘错误提示信息’)) pattern 正则表达式 正则表达式
  1. 自定义校验 validateStatus: ‘success’ | ‘error’ | ‘warning’ | ‘validating’ 校验状态 help: ‘错误提示信息’ hasFeedback: true | false 是否展示反馈图标 用法举例:
<Form>
	<Form.Item validateStatus=error help=请输入内容>
		<Input placeholder=请输入内容 />
	</Form.Item>
</Form>
  1. 常用方法 3.1 获取对应字段的值: getFieldValue(‘字段名称’) 3.2 设置字段值: setFieldsValue({ 字段名1: 字段值1, 字段名2:字段值2 }) 3.3 表单验证 validateFields((error, valuesObj) => {}) // 校验所有字段 validateFields([‘字段1’, ‘字段2’], (error, valuesObj) => {}) // 校验指定字段 validateFields([‘字段1’, ‘字段2’],options, (error, valuesObj) => {})

// options.first: true | false // 对每个校验字段而言,如果前面的校验规则未通过,则后面的规则不再校验 // options.firstFields: [‘字段1’, ‘字段2’] // 对于指定的字段而言,如果前面的校验规则未通过,则后面的规则不再校验 3.4 resetFields() // 重置表单(有初始值则重置为初始值,无初始值清空表单)

经验分享 程序员 微信小程序 职场和发展