美文网首页
Ant Form使用总结 —— 校验

Ant Form使用总结 —— 校验

作者: 赖次Go | 来源:发表于2021-06-08 08:04 被阅读0次

    正则校验

    使用item属性rules[]字段中pattern进行正则校验,可进行多正则验证不同message

    问题:

    1. 多正则校验容易触发多报错,UI显示较为混乱
    2. 不支持异步
    <Form.Item
        rules={[{
           require : true,
           pattern : /^[^`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]+$/im
           message : '不可包含特殊符号',
        }]}
    >
        <Input />
    </Form.Item>
    
    

    方法校验

    较为靠谱的一种校验方式,虽然是可以支持多方法的校验方式,基本一个方法就可以满足大多校验
    支持异步

    <Form.Item
        rules={[{
           ({ getFieldValue }) => ({
                validator(rule, value) {
                   if ( value === getFieldValue( 'password' )) return Promise.resolve()
                   return Promise.reject( '密码不一致' )
                }
           })
        }]}
    >
        <Input />
    </Form.Item>
    

    问题:普通情况每次输入都会校验,如有接口请求需使用截流

    FormInstance触发校验

    随时随地触发校验的方法
    可以在当前字段触发其他字段或整表校验的方法

    import { Form , Select, Layout , Input } from 'antd'
    
    export default () => {
      const [ form ] = Form.useForm()
      const handleChange = ( val ) => {
        form.validateFields(['score']) //校验方法
      }
    
      return (
          <Layout.Content>
            <Select onChange={ handleChange }>
                <Select.Option value="1">及格</Select.Option>
                <Select.Option value="2">不及格</Select.Option>
            </Select>
            <Form form={ form }>
            <Form.Item name="class" lable="班级">
              <Input />
            </Form.Item>
            <Form.Item 
              name="score" 
              lable="分数" 
              rules={[{
                require : true,
                message : "请输入考试得分"
              }]}
            >
              <Input />
            </Form.Item>
          </Form>
         </Layout.Content>
      )
    }
    

    自定义校验

    validateStatus help hasFeedback 等属性,你可以不通过 Form 自己定义校验的时机和内容。

    • validateStatus: 校验状态,可选 'success', 'warning', 'error', 'validating'。
    • hasFeedback:用于给输入框添加反馈图标。
    • help:设置校验文案。

    官网体:

    <Form.Item label="Success" hasFeedback validateStatus="success">
          <InputNumber style={{ width: '100%' }} />
    </Form.Item>
    

    实例:

    import React, { useCallback } from 'react'
    import { Form , Layout, Select , InputNumber } from 'antd'
    
    const CustomValidateForm = props => {
        const [ validateStatus , setValidateStatus ] = useState( 'success' )
        const [ form ] = Form.useForm()
    
        const handleValidateMessageChange = useCallback(
            val => {
                setValidateStatus( val )
            } , []
        )
    
        return (
            <Layout>
                <Select 
                    value={ validateStatus }
                    onChange={ handleValidateMessageChange }
                >
                    <Select.Option value={ "success" }>success</Select.Option>
                    <Select.Option value={ "warning" }>warning</Select.Option>
                    <Select.Option value={ "error" }>error</Select.Option>
                    <Select.Option value={ "validating" }>validating</Select.Option>
                </Select>
                <Form
                    form={ form }
                >
                    <Form.Item 
                        label="Success" 
                        hasFeedback 
                        validateStatus={ validateStatus }
                    >
                        <InputNumber style={{ width: '100%' }} />
                    </Form.Item>
                </Form>
            </Layout>
        )
    }
    

    相关文章

      网友评论

          本文标题:Ant Form使用总结 —— 校验

          本文链接:https://www.haomeiwen.com/subject/gctkeltx.html