为了账号安全,请及时绑定邮箱和手机立即绑定

AntDesign-Form-rules教程:新手入门指南

概述

本文详细介绍了AntDesign-Form-rules教程,包括基础使用、验证规则详解、常见验证规则的应用以及自定义验证函数的使用。文章还涵盖了多字段联动验证和表单提交与错误处理的流程,帮助开发者实现复杂的表单验证逻辑。

AntDesign-Form简介

Ant Design介绍

Ant Design 是一套由阿里云团队研发的前端设计语言,它包含了丰富的UI组件,遵循一致的设计语言,支持React、Vue等主流前端框架。Ant Design的组件库提供了从表单、按钮、布局到更复杂的图表组件,覆盖了Web应用开发所需的大部分UI组件。其设计理念是提供一套开箱即用的设计体系,帮助开发者快速构建高质量的Web应用。

Form组件基础使用

Ant Design的Form组件主要用于构建表单,提供表单数据校验、表单布局等功能。其基础用法包括创建Form实例、使用Form.Item包裹表单项、设置表单提交等功能。

import { Form, Input, Button } from 'antd';
import { UserOutlined, LockOutlined } from '@ant-design/icons';

class LoginForm extends React.Component {
  onFinish = (values) => {
    console.log('Received values of form: ', values);
  };

  render() {
    return (
      <Form onFinish={this.onFinish} layout="vertical">
        <Form.Item
          name="username"
          rules={[
            {
              required: true,
              message: 'Please input your username!',
            },
          ]}
        >
          <Input prefix={<UserOutlined />} placeholder="Username" />
        </Form.Item>
        <Form.Item
          name="password"
          rules={[
            {
              required: true,
              message: 'Please input your password!',
            },
          ]}
        >
          <Input
            prefix={<LockOutlined />}
            type="password"
            placeholder="Password"
          />
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit" block>
            Sign in
          </Button>
        </Form.Item>
      </Form>
    );
  }
}

Form规则(rules)介绍

rules属性详解

rules属性是表单项目中的一个重要属性,用于定义表单字段的验证规则。rules属性通常是一个对象或对象数组,每个对象可以包含多种验证规则。

<Form.Item
  name="email"
  rules={[
    {
      required: true,
      message: 'Please input your email!',
    },
    {
      type: 'email',
      message: 'Please input a valid email!',
    },
  ]}
>
  <Input placeholder="Email" />
</Form.Item>

常用验证规则

Ant Design的Form组件提供了多种内置验证规则,如requiredtypeminmax等。

  • required:必填项验证。
  • type:类型验证,如emailnumber等。
  • min:最小长度验证。
  • max:最大长度验证。
  • pattern:正则表达式验证。
<Form.Item
  name="username"
  rules={[
    {
      required: true,
      message: 'Please input your username!',
    },
    {
      min: 3,
      message: 'Username must be at least 3 characters!',
    },
    {
      max: 10,
      message: 'Username must not exceed 10 characters!',
    },
  ]}
>
  <Input placeholder="Username" />
</Form.Item>

基本验证规则应用

必填项验证

通过设置required属性可以实现必填项验证。如果表单项未填写,提交表单时会触发错误提示。

<Form.Item
  name="username"
  rules={[
    {
      required: true,
      message: 'Please input your username!',
    },
  ]}
>
  <Input placeholder="Username" />
</Form.Item>

邮箱格式验证

通过设置type属性为email可以实现邮箱格式验证。如果输入的邮箱格式不正确,提交表单时会触发错误提示。

<Form.Item
  name="email"
  rules={[
    {
      required: true,
      message: 'Please input your email!',
    },
    {
      type: 'email',
      message: 'Please input a valid email!',
    },
  ]}
>
  <Input placeholder="Email" />
</Form.Item>

自定义验证规则

自定义验证函数

可以通过自定义验证函数来实现更复杂的验证逻辑。自定义验证函数需要返回一个对象,包含success属性和message属性。

<Form.Item
  name="custom"
  rules={[
    ({ getFieldValue }) => ({
      validator(_, value) {
        if (!value) {
          return Promise.reject(new Error('Please input your custom value!'));
        }
        if (value.length < 5) {
          return Promise.reject(new Error('Custom value must be at least 5 characters!'));
        }
        return Promise.resolve();
      },
    }),
  ]}
>
  <Input placeholder="Custom Value" />
</Form.Item>

验证规则链式调用

可以将多个验证规则链式调用,这样可以实现更复杂的验证逻辑。

<Form.Item
  name="username"
  rules={[
    {
      required: true,
      message: 'Please input your username!',
    },
    {
      min: 3,
      message: 'Username must be at least 3 characters!',
    },
    {
      max: 10,
      message: 'Username must not exceed 10 characters!',
    },
  ]}
>
  <Input placeholder="Username" />
</Form.Item>

多字段联动验证

多字段验证场景

在某些场景下,表单字段之间存在依赖关系,需要进行多字段联动验证。比如,输入的密码和确认密码字段需要保持一致。

<Form.Item
  name="password"
  rules={[
    {
      required: true,
      message: 'Please input your password!',
    },
  ]}
>
  <Input
    prefix={<LockOutlined />}
    type="password"
    placeholder="Password"
  />
</Form.Item>
<Form.Item
  name="confirm"
  dependencies={['password']}
  hasFeedback
  rules={[
    ({ getFieldValue }) => ({
      validator(_, value) {
        if (!value || getFieldValue('password') === value) {
          return Promise.resolve();
        }
        return Promise.reject(new Error('The two passwords that you entered do not match!'));
      },
    }),
  ]}
>
  <Input
  prefix={<LockOutlined />}
  type="password"
  placeholder="Confirm Password"
/>
</Form.Item>
``

#### 表单校验流程
表单校验流程通常包括以下步骤:
1. 用户输入数据。
2. 表单组件自动触发验证规则。
3. 如果验证失败,显示错误提示。
4. 用户修正错误后重新提交表单。
5. 如果所有验证通过,表单数据提交成功。

```jsx
import { Form, Input, Button } from 'antd';

class LoginForm extends React.Component {
  onFinish = (values) => {
    console.log('Received values of form: ', values);
  };

  render() {
    return (
      <Form onFinish={this.onFinish} layout="vertical">
        <Form.Item
          name="username"
          rules={[
            {
              required: true,
              message: 'Please input your username!',
            },
          ]}
        >
          <Input placeholder="Username" />
        </Form.Item>
        <Form.Item
          name="password"
          rules={[
            {
              required: true,
              message: 'Please input your password!',
            },
          ]}
        >
          <Input
            type="password"
            placeholder="Password"
          />
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit">Submit</Button>
        </Form.Item>
      </Form>
    );
  }
}

表单提交与错误处理

表单提交逻辑

表单提交逻辑通常包含提交事件处理函数,当表单提交时,调用onFinish函数处理表单数据。

import { Form, Input, Button } from 'antd';

class LoginForm extends React.Component {
  onFinish = (values) => {
    console.log('Received values of form: ', values);
  };

  render() {
    return (
      <Form onFinish={this.onFinish} layout="vertical">
        <Form.Item
          name="username"
          rules={[
            {
              required: true,
              message: 'Please input your username!',
            },
          ]}
        >
          <Input placeholder="Username" />
        </Form.Item>
        <Form.Item
          name="password"
          rules={[
            {
              required: true,
              message: 'Please input your password!',
            },
          ]}
        >
          <Input
            type="password"
            placeholder="Password"
          />
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit">Submit</Button>
        </Form.Item>
      </Form>
    );
  }
}

错误信息提示与处理

当表单验证失败时,会显示相应的错误信息。开发者可以通过rules属性中的message属性自定义错误信息。

<Form.Item
  name="email"
  rules={[
    {
      required: true,
      message: 'Please input your email!',
    },
    {
      type: 'email',
      message: 'Please input a valid email!',
    },
  ]}
>
  <Input placeholder="Email" />
</Form.Item>

总结

Ant Design的Form组件提供了丰富的表单校验功能,包括必填项验证、邮箱格式验证、自定义验证函数以及多字段联动验证等。通过合理设置rules属性,可以实现复杂的表单验证逻辑,确保用户输入的数据符合预期格式。同时,表单提交逻辑和错误信息处理也能够提高用户体验,使表单更加健壮和可靠。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消