React Ant form 自定义校验规则问题总结

React Ant form 自定义校验规则问题总结

官网给出的例子很简单

		 <Form  form={form} onFinish={onFinish} onFinishFailed={onFinishFailed}>
               <Form.Item
                  label="用户名"
                  name="username"
                  rules={[
                    {
                      required: true,
                      message: '请输入用户名',
                    },
                  ]} 
                  >
                  <Input placeholder="Select a option and change input text above"/>
                </Form.Item>
              <Button type="primary" htmlType="submit">登录</Button>
              <Button htmlType="button" type="dashed" onClick={onReset}>重值					</Button>
            </ Form>

从中我们不难看出rules是一个数组对象的格式,同时也是我们自定义规则的地方,就拿简单的来讲,如果注册界面中我们要验证手机号的规则怎么做,其实也很简单,就需要我们自己来定义规则了

在官方文档中我们可以看到有一个pattern,和validator这样两个的属性(文章重点)

名称说明类型
defaultField仅在 typearray 类型时有效,用于指定数组元素的校验规则rule
enum是否匹配枚举中的值(需要将 type 设置为 enumany[]
fields仅在 typearrayobject 类型时有效,用于指定子元素的校验规则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类型,常见有 stringnumber
validateTrigger设置触发验证时机,必须是 Form.Item 的 validateTrigger 的子集string | string[]
validator自定义校验,接收 Promise 作为返回值。示例参考(rule, value) => Promise
warningOnly仅警告,不阻塞表单提交boolean
whitespace如果字段仅包含空格则校验不通过,只在 type: 'string' 时生效boolean

知道了这两个属行,接下来当然是实践了,如有不懂的或者想看更多from表单的请点击👉Ant design “官网”

 			<Form  form={form} onFinish={onFinish} onFinishFailed={onFinishFailed}>
               <Form.Item
                  label="用户名"
                  name="username"
                  rules={[
                          {
                            pattern:/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/,
                            validator: (rule, value) =>{
                            return rule.pattern.test(value) ? Promise.resolve() : value ? Promise.reject(new Error('提示错误消息')) : 									Promise.reject(new Error('提示消息不能为空'))
                              },
                          }
                        ]}
                        >
                  <Input placeholder="Select a option and change input text above"/>
                </Form.Item>
              <Button type="primary" htmlType="submit">登录</Button>
              <Button htmlType="button" type="dashed" onClick={onReset}>重值</Button>
            </ Form>

validator接受两个参数的值,一个值rule,是你当前定义的rules上的属性和方法以及你定义的规则,另一个值为当前from表单中value,且返回值必须为Promise

这样我们的要求就完成了,当你from表单中什么都没有时提示您的消息为空,如果不为空,但你的输入的不符合RegExp,则会提示您消息错误,知道你输入合法

字符,希望本文章就够帮到您!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ant Design的Form组件可以帮助我们快速创建表单,并且支持表单验证、数据提交等功能。下面是一个简单的Ant Design表单组件的代码示例: ```jsx import { Form, Input, Button } from 'antd'; const layout = { labelCol: { span: 8, }, wrapperCol: { span: 16, }, }; const tailLayout = { wrapperCol: { offset: 8, span: 16, }, }; const Demo = () => { const onFinish = (values) => { console.log('Success:', values); }; const onFinishFailed = (errorInfo) => { console.log('Failed:', errorInfo); }; return ( <Form {...layout} name="basic" initialValues={{ remember: true, }} onFinish={onFinish} onFinishFailed={onFinishFailed} > <Form.Item label="Username" name="username" rules={[ { required: true, message: 'Please input your username!', }, ]} > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[ { required: true, message: 'Please input your password!', }, ]} > <Input.Password /> </Form.Item> <Form.Item {...tailLayout}> <Button type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> ); }; export default Demo; ``` 在这个例子中,我们使用了Ant Design的Form、Input和Button组件来创建一个简单的表单。通过设置Form组件的name、onFinish和onFinishFailed属性,我们可以指定表单的名称、数据提交成功和失败时的回调函数。通过在Form.Item中设置rules属性,我们可以为表单字段设置验证规则。最后,在Form.Item中包裹的Input和Button组件则是表单中的输入框和提交按钮。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端深造中

老板别忘了支持哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值