当前位置:   article > 正文

antd form 表单数据校验·记_antd form校验

antd form校验

目录

一、antd form 表单校验语法

二、antd form 表单校验规则

三、antd form 表单校验实例

1、一般的表单校验

2、连续的表单校验

3、连续的复杂表单校验

(1)、Form.list 下的 Form.Item 的校验

(2)、Form.Item 下的 Form.Item 的校验


一、antd form 表单校验语法

Rule 支持接收 object 进行配置,也支持 function 来动态获取 form 的数据:

type Rule = RuleConfig | ((form: FormInstance) => RuleConfig);

二、antd form 表单校验规则

名称说明类型
defaultField仅在 type 为 array 类型时有效,用于指定数组元素的校验规则rule
enum是否匹配枚举中的值(需要将 type 设置为 enumany[]
fields仅在 type 为 array 或 object 类型时有效,用于指定子元素的校验规则Record<string, rule>
lenstring 类型时为字符串长度;number 类型时为确定数字; array 类型时为数组长度number
max必须设置 type:string 类型为字符串最大长度;number 类型时为最大值;array 类型时为数组最大长度number
message错误信息,不设置时会通过模板自动生成string
min必须设置 type:string 类型为字符串最小长度;number 类型时为最小值;array 类型时为数组最小长度number
pattern正则表达式匹配RegExp
required是否为必选字段boolean
transform将字段值转换成目标值后进行校验(value) => any
type类型,常见有 string |number |boolean |url | email。更多请参考此处string
validateTrigger设置触发验证时机,必须是 Form.Item 的 validateTrigger 的子集string | string[]
validator自定义校验,接收 Promise 作为返回值。示例参考(rule, value) => Promise
whitespace如果字段仅包含空格则校验不通过boolean

三、antd form 表单校验实例

1、一般的表单校验

通过实现 Form.Item 的 rules 属性,来定制规则。

例如:

  1. <Form
  2. form={myForm}
  3. name="my_form"
  4. onFinish={onFinish}
  5. autoComplete="off"
  6. >
  7. <Form.Item
  8. name="username"
  9. label="姓名"
  10. rules={[
  11. {
  12. required: true,
  13. message: '请输入你的名字',
  14. },
  15. ]}
  16. >
  17. <Input />
  18. </Form.Item>
  19. </Form>

2、连续的表单校验

如果一个字段设置了 dependencies 属性。那么它所依赖的字段更新时,该字段将自动触发更新与校验。

通过  dependencies 属性,指定与当前字段(A)关联的字段(例如:B),当 B 发生变化时,A 将自动触发更新与校验。

rules 里为额外的校验新增一个函数。例如:

  1. <Form
  2. form={myForm}
  3. name="my_form"
  4. onFinish={onFinish}
  5. autoComplete="off"
  6. >
  7. <Form.Item
  8. name="password"
  9. label="密码"
  10. rules={[
  11. {
  12. required: true,
  13. message: '请输入密码',
  14. },
  15. ]}
  16. hasFeedback
  17. >
  18. <Input.Password />
  19. </Form.Item>
  20. <Form.Item
  21. name="confirm"
  22. label="确认密码"
  23. dependencies={['password']}
  24. hasFeedback
  25. rules={[
  26. {
  27. required: true,
  28. message: '请确认密码',
  29. },
  30. ({ getFieldValue }) => ({
  31. validator(_, value) {
  32. if (!value || getFieldValue('password') === value) {
  33. return Promise.resolve();
  34. }
  35. return Promise.reject(new Error('两次密码不一致!'));
  36. },
  37. }),
  38. ]}
  39. >
  40. <Input.Password />
  41. </Form.Item>
  42. </Form>

3、连续的复杂表单校验

(1)、Form.list 下的 Form.Item 的校验

rules 里为额外的校验新增一个函数。例如:

(2)、Form.Item 下的 Form.Item 的校验

rules 里为额外的校验新增一个对象。例如:

  1. <Form
  2. form={myForm}
  3. name="my_form"
  4. onFinish={onFinish}
  5. autoComplete="off"
  6. >
  7. <Form.Item name="test">
  8. <Input.Group compact>
  9. <Form.Item
  10. name="method"
  11. noStyle
  12. rules={[{ required: true }]}
  13. >
  14. <Select>
  15. <Option value="GET">GET</Option>
  16. <Option value="POST">POST</Option>
  17. </Select>
  18. </Form.Item>
  19. <Form.Item
  20. name={['test', 'url']}
  21. noStyle
  22. rules={[{
  23. required: true,
  24. message: 'url不能为空'
  25. },
  26. {
  27. type: 'url',
  28. message: '请输入完整的url',
  29. }
  30. ]}
  31. >
  32. <Input placeholder="填写接口url地址"/>
  33. </Form.Item>
  34. <Form.Item>
  35. <Button type='primary' onClick={getTestResult}>
  36. test
  37. </Button>
  38. </Form.Item>
  39. </Input.Group>
  40. </Form.Item>
  41. </Form>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/115574
推荐阅读
相关标签
  

闽ICP备14008679号