我有自己的<List>
硬件,其中显示了datababse中的每个硬件。每个项目都有属性odata.type
,它表示硬件的类型(RAM,CPU等)。
如果我单击某些项目,它将重定向到HardwareEdit
表单。我想显示基于odata.type
属性的特定形式。例如,如果我要编辑某些CPU,则将显示CPUEdit
表单而不是HardwareEdit
表单。有可能吗?到目前为止,我将这段代码放在一起,但无法正常工作:
这将返回硬件类型:
const HWType = ({ record }) => {
return record["odata.type"];
}
我的重定向常量:
const redirect = `/Hardware/${record => record.Id}`;
HardwareList:
export const HardwareList = props => (
<List
sort={{ field: "Id", order: "ASC" }}
filters={<HardwareFilter />}
{...props}
>
<Datagrid rowClick="edit">
<TextField source="Name" />
<ReferenceField label="Type" source="Id" reference="Hardware" allowEmpty>
<FunctionField label="Type" render={record => record ? record["odata.type"].split(".")[1] : null} />
</ReferenceField>
<ReferenceField label="SocketType" source="SocketTypeId" reference="CPUSocketType" allowEmpty>
<FunctionField label="Name" render={record => record ? record.Name : null} />
</ReferenceField>
<TextField source="CapacityGB" label="Capacity(GB)" allowEmpty/>
<TextField source="Barcode" />
<DateField source="CreatedDate" showTime />
</Datagrid>
</List>
);
和HardwareEdit表单:
export const HardwareEdit = props => (
<Edit {...props} title={<HardwareTitle />} aside={<Aside />}>
{record => record["odata.type"] === HWType ? redirect={redirect} : null}
<SimpleForm>
<DisabledInput source="Id" />
<TextInput source="Name" validate={required()} />
<TextInput source="Barcode" />
<DateField source="CreatedDate" showTime
locales={process.env.REACT_APP_LOCALE}
disabled={true} />
<FileInput source="files" label="Related files" accept="" multiple={true}>
<FileField source="Filename" title="Filename" />
</FileInput>
</SimpleForm>
</Edit>
);
谢谢您的任何建议。