带有SimpleFormIterator和条件输入的ArrayInput

时间:2018-08-08 07:51:00

标签: react-admin

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

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

然后我只想在TextInput

时显示额外的id==="ID2"
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的操作,但是它仍未收到自定义输入中的记录。

1 个答案:

答案 0 :(得分:1)

从最新文档here中,您可以看到,如果使用FormDataConsumer中的ArrayInput,则可以使用一个名为scopedFormData的参数获取当前记录并取消引用,以获取所需的任何字段。通常,它还与getSource功能配合使用,您可以在FormDataConsumer中设置信号源时使用。