You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React中使用Ant Design Form时如何获取Form.Item内Table的对应值?

问题原因

Ant Design Form 只会自动收集Form.Item嵌套的标准表单控件(如Input、Select等)的值,Table组件本身不属于表单输入控件,没有内置value属性和值变更的onChange通知逻辑,因此Form无法感知并收集它对应的字段值,所以返回undefined。


可行解决方案

方案1:通过隐藏表单控件同步Table数据源(推荐)

如果需要让Table的数据源完全被Form接管,可在同个Form.Item内新增隐藏的Input控件,用来承载Table的数据源,Form会自动收集该Input的值:

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

const Demo = () => {
  // 若Table数据可编辑,用state维护数据源
  const [items, setItems] = useState([
    {
      job: 'Engineer',
      age: 20
    },
    {
      job: 'Accountant',
      age: 24
    }
  ]);
  const [form] = Form.useForm();

  const onCreate = (values) => {
    console.log(values); // 这里jobs字段就能拿到完整的items数据
  }

  // 示例:Table数据修改后同步到Form字段
  const updateTableData = (newData) => {
    setItems(newData);
    form.setFieldValue('jobs', newData);
  }

  return (
    <Form 
      form={form}
      layout='vertical' 
      onFinish={onCreate}
      // 静态数据也可以直接在initialValues里初始化jobs的值,无需额外维护state也能拿到
      initialValues={{ jobs: items }}
    >
      <Form.Item name='jobs' label="职位列表">
        {/* 隐藏的Input用来存值,Form会自动收集它的value */}
        <Input type="hidden" />
        <Table dataSource={items} rowKey="job" />
      </Form.Item>
      <Form.Item>
        <button type="submit">提交</button>
      </Form.Item>
    </Form>
  )
}

方案2:提交时手动合并Table数据源

如果Table数据固定不需要动态修改,可直接在提交回调里手动把数据源合并到Form返回值中,实现更简单:

import { Form, Table } from 'antd';

const Demo = () => {
  const items = [
    { job: 'Engineer', age: 20 },
    { job: 'Accountant', age: 24 }
  ]

  const onCreate = (values) => {
    // 手动把items赋值给jobs字段
    const submitValues = { ...values, jobs: items };
    console.log(submitValues);
  }

  return (
    <Form layout='vertical' onFinish={onCreate}>
      {/* 不需要加name属性,无需Form自动收集 */}
      <Form.Item label="职位列表">
        <Table dataSource={items} rowKey="job" />
      </Form.Item>
      <Form.Item>
        <button type="submit">提交</button>
      </Form.Item>
    </Form>
  )
}

内容的提问来源于stack exchange,提问作者Matsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:09:05