您可以尝试以下代码实现您的需求:

import { Form, Input } from 'antd';
import { useState } from 'react';

const YourComponent = () => {
  const [form] = Form.useForm();
  const [isSubmitting, setIsSubmitting] = useState(false);
  const [validationResults, setValidationResults] = useState({});

  const onFinish = async (values) => {
    setIsSubmitting(true);
    try {
      // 发送请求并等待响应
      const response = await yourApiFunction(values);
      // 根据响应结果进行处理
      if (response.success) {
        form.validateFields();
      } else {
        setValidationResults({
          yourInputName: {
            status: 'error',
            help: '校验失败提示信息',
          },
        });
      }
    } catch (error) {
      console.error(error);
      // 处理请求错误
    } finally {
      setIsSubmitting(false);
    }
  };

  return (
    <Form
      form={form}
      onFinish={onFinish}
    >
      <Form.Item
        name="yourInputName"
        rules={[
          {
            required: true,
            message: '请输入内容',
          },
        ]}
        validateStatus={validationResults.yourInputName?.status}
        help={validationResults.yourInputName?.help}
      >
        <Input placeholder="请输入内容" />
      </Form.Item>

      <Form.Item>
        <Button type="primary" htmlType="submit" loading={isSubmitting}>
          提交
        </Button>
      </Form.Item>
    </Form>
  );
};

export default YourComponent;

在上述代码中,我们使用了Form和Form.Item组件来构建表单,并通过useForm钩子函数创建了一个表单实例form。我们使用useState钩子函数来管理提交状态isSubmitting和校验结果validationResults。

当提交表单时,我们首先将提交状态isSubmitting设置为true,然后发送请求并等待响应。根据响应结果,如果成功,我们调用form.validateFields()方法来触发表单校验;如果失败,我们使用setValidationResults函数设置校验结果,将对应输入框的状态设置为error,并提供校验失败的提示信息。

最后,我们在Form.Item组件中使用validateStatus和help属性来动态设置输入框的状态和提示信息。

请注意替换代码中的yourApiFunction为您实际的接口请求函数,并根据实际情况修改代码中的yourInputName、校验失败提示信息等内容。

Ant Design Form.Item 输入校验:异步请求验证并显示错误提示

原文地址: https://www.cveoy.top/t/topic/pa6l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录