【问题标题】:antd form initialize with a complex multilevel nested objectantd 表单使用复杂的多级嵌套对象进行初始化
【发布时间】:2021-07-16 04:07:34
【问题描述】:

给出数据:

formValues = {
  level: {
    test: data1,
    level2: {
      test: data2,
      level3: { 
        test: data3
      }
    }
  } 
}

我有一个像这样的 Ant 表单:

<Form
    form={form}
    name="demo"
    onFinish={onFinish}
    initialValues={formValues}
>
    <Form.Item label="Sub1" name={['level', 'test']}>
        <Input placeholder="Sub1" />
    </Form.Item>
    <Form.Item label="Sub2" name={['level.level2', 'test']}>
        <Input placeholder="Sub2" />
    </Form.Item>
    <Form.Item label="Sub1" name={['level.level2.level3', 'test']}>
        <Input placeholder="Sub1" />
    </Form.Item>
</Form>

也许有人知道为什么我不能启动第三级? 1 级和 2 级正在显示,但 3 级似乎不起作用。

我不知道,第三级有什么不同...谁能帮帮我?

【问题讨论】:

    标签: reactjs antd ant-design-pro


    【解决方案1】:

    我不明白您要做什么,但在我的测试中,如果您想到达“data3”,这是正确的路径。

    formValues.level.level2.level3 将返回 {"test": "data3"}

    我看到您的第三个&lt;Form.Item&gt; 元素与您的第一个表单元素几乎相同,这可能会造成混淆?反正我扔了一个 CodeSandbox,

    https://codesandbox.io/s/qgzb7

    【讨论】:

    • 没有混淆 :) 第三个表单项只是没有填充 :(
    【解决方案2】:

    antd documentation for Form 给出了表单嵌套的示例,但仅适用于第一级。

    我在其他地方找不到使用多个级别的示例,但我发现添加额外的索引来表示每个级别就可以了。

    而不是这个:

    <Form.Item label="Sub1" name={['level.level2.level3', 'test']}>
        <Input placeholder="Sub1" />
    </Form.Item>
    

    试试这个:

    <Form.Item label="Sub1" name={['level', 'level2', 'level3', 'test']}>
        <Input placeholder="Sub1" />
    </Form.Item>
    

    Codesandbox

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2017-06-08
    • 2017-02-27
    • 2010-12-07
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多