Таким образом, приведенный ниже код прекрасно работает, но я использую ReferenceField
только для извлечения записи, выбранной в ReferenceInput
.Это немного странно.
Любой совет, как я ДОЛЖЕН сделать это?
Мой вариант использования:
// js-ish description of my datamodel
{ id, name, needsMeta } = Role
{ id, name } = RoleMeta
{ id, roleId, userId, metaId } = AssignedRole
Я строюФорма создания / редактирования для модели AssignedRole
.
Я хочу показать ReferenceInput
для metaId
, только если выбранный Role
нуждается в мета (needsMeta
)
<ReferenceInput
source="roleId"
reference="role"
sort={{
field: 'id',
order: 'ASC'
}}
>
<AutocompleteInput optionText="name" />
</ReferenceInput>
<FormDataConsumer>
{({ formData, ...rest }) => (
formData.roleId &&
<ReferenceField
source="roleId"
record={{roleId: formData.roleId}}
reference="role"
basePath={rest.basePath}
resource={rest.resource}
linkType={false}
>
<FunctionField render={roleRecord => {
if(!roleRecord.needsMeta){
formData.metaId = null;
}
return roleRecord && roleRecord.needsMeta && (
<ReferenceInput
source="metaId"
reference="rolemeta"
sort={{
field: 'id',
order: 'ASC'
}}
{...rest}
>
<AutocompleteInput optionText="name" />
</ReferenceInput>
);
}} />
</ReferenceField>
)}
</FormDataConsumer>