可以使用Form组件的shouldUpdate属性来控制,该属性接收一个函数作为参数,该函数会在每次表单值发生变化时被调用,如果返回true,则表单会被提交。因此,我们可以在这个函数中比较当前表单值和之前表单值的差异,只提交发生更改的值。

以下是一个示例代码:

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

const DemoForm = () => {
  const [form] = Form.useForm();
  const [previousValues, setPreviousValues] = useState({});

  const onFinish = (values) => {
    console.log('Submitted values:', values);
    setPreviousValues(values);
  };

  const shouldUpdate = (prevValues, curValues) => {
    // 判断当前表单值和之前表单值是否一致
    return Object.keys(curValues).some((key) => curValues[key] !== prevValues[key]);
  };

  return (
    <Form form={form} onFinish={onFinish} shouldUpdate={shouldUpdate.bind(null, previousValues)}>
      <Form.Item name="name" label="Name" initialValue={previousValues.name}>
        <Input />
      </Form.Item>
      <Form.Item name="age" label="Age" initialValue={previousValues.age}>
        <Input />
      </Form.Item>
      <Form.Item>
        <Button type="primary" htmlType="submit">
          Submit
        </Button>
      </Form.Item>
    </Form>
  );
};

export default DemoForm;

在这个示例代码中,我们使用了useState钩子来存储之前的表单值。在每次表单提交后,我们将当前表单值作为之前的表单值进行保存。然后,在shouldUpdate函数中,我们比较当前表单值和之前表单值的差异,如果有差异,就返回true,否则返回false,这样就可以控制是否提交表单。

antd的form组件怎么在每次提交时只提交更改的值

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

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