AntDesign、ArcoDesign触发表单校验的几种方式

AntDesign、ArcoDesign触发表单校验的几种方式

1.htmlType="submit"方式

2.借助上下文调用submit实现

3.通过ref方式

4.通过form={fomr}方式 (给Form加配置项)
在这里插入图片描述

import React, { useRef } from "react";
import {
  Form,
  AutoComplete,
  Input,
  Select,
  TreeSelect,
  Button,
  Checkbox,
  Switch,
  Radio,
  Cascader,
  Message,
  InputNumber,
  Rate,
  Slider,
  Upload,
  DatePicker,
  Modal,
} from "@arco-design/web-react";

function App() {
  const [visible, setVisible] = React.useState(false);
  const FormItem = Form.Item;
  const formRef = useRef();
  const [fomr] = Form.useForm();

  return (
    <div>
      <Button onClick={() => setVisible(true)} type="primary">
        Open Modal
      </Button>
      {/* 表单校验 */}
      <Modal
        title="Modal Title"
        visible={visible}
        onOk={() => setVisible(false)}
        onCancel={() => setVisible(false)}
        autoFocus={false}
        focusLock={true}
      >
        <Form ref={formRef} form={fomr}>
          <FormItem
            label="Username"
            field="name"
            required
            rules={[
              {
                validator(value, cb) {
                  if (!value) {
                    return cb("探测任务为必选项");
                  }
                  console.log(value, "dsfsddfs");
                  return cb();
                },
              },
            ]}
          >
            <Input placeholder="please enter..." />
          </FormItem>
          <FormItem>
            {/*  1.htmlType="submit"方式 */}
            <Button type="primary" htmlType="submit">
              999
            </Button>
          </FormItem>
          <FormItem>
            {/* 2.借助上下文调用submit实现 */}
            <Button
              type="primary"
              onClick={() => {
                fomr.submit();
                console.log(fomr, "sd");
              }}
            >
              submi
            </Button>
          </FormItem>
          <FormItem>
            {/* 3.通过ref方式 */}
            <Button
              onClick={async () => {
                try {
                  await formRef.current.validate();

                  Message.info("校验通过,提交成功!");
                } catch (_) {
                  console.log(formRef.current.getFieldsError());
                  Message.error("校验失败,请检查字段!");
                }
              }}
              type="primary"
              style={{ marginRight: 24 }}
            >
              Submit
            </Button>
          </FormItem>
          <FormItem>
            {/* 4.通过form={fomr}方式 */}
            <Button
              onClick={async () => {
                try {
                  await fomr.validate();
                  Message.info("校验通过,提交成功!");
                } catch (_) {
                  console.log(fomr.getFieldsError());
                  Message.error("校验失败,请检查字段!");
                }
              }}
              type="primary"
              style={{ marginRight: 24 }}
            >
              3333
            </Button>
          </FormItem>
        </Form>
      </Modal>
    </div>
  );
}

export default App;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值