【问题标题】:ArrayInput with SimpleFormIterator and conditional inputs带有 SimpleFormIterator 和条件输入的 ArrayInput
【发布时间】:2018-08-08 07:50:59
【问题描述】:

假设我的创建表单中有以下数组

    const CreateDefaults = {Inputs: [{id: "ID1", param: "a"},{id: "ID2", param: "b"}]};

然后我只想在id==="ID2" 时显示额外的TextInput

export const MyCreate = withStyles(myStyles)(({ classes, ...props }) => (
<Create {...props}>
  <SimpleForm defaultValue={CreateDefaults}>
    <ArrayInput source="Inputs" {...props}>
      <SimpleFormIterator {...props}>
        <DisabledInput source="id" />
        {/*this does not work*/}
        {this.id === "ID2" ? (<TextInput source="ParamValue"/>) :null}
      </SimpleFormIterator>
    </ArrayInput>
  </SimpleForm>
</Create>
));

我怎么能做这样的事情?我知道对于整个表格,可以使用FormDataConsumer。但是,对于每次迭代,在ArrayInput/SimpleFormIterator 中可以做什么?

如何在迭代中访问当前对象?我试过the answer given to the 'Custom Input do not receive record when inside ArrayInput' issue in the react-admin github page之类的东西,但它仍然没有收到自定义输入中的记录。

【问题讨论】:

    标签: react-admin


    【解决方案1】:

    从最新的文档here,您可以看到,如果您使用FormDataConsumer,它位于ArrayInput 中,您有一个名为scopedFormData 的参数,您可以使用它来获取当前记录并取消引用它得到你需要的任何领域。它通常还与您在 FormDataConsumer 中设置源时可以使用的 getSource 函数密切相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多