В нашем приложении мы пытаемся использовать Datagrid в ReferenceField для создания / изменения / удаления связанных записей, как показано в https://marmelab.com/blog/2018/07/09/react-admin-tutorials-form-for-related-records.html
Все функциональные возможности, показанные в руководстве, работают хорошо, кроме массовых действий, добавленных в недавнем обновлении реакции-администратора. Нажатие на эти флажки дает
Uncaught TypeError: _this.props.onToggleItem не является функцией
Я полагаю, это потому, что реквизит onToggleItem обычно предоставляется компонентом List, однако в этом приложении Datagrid не имеет родительского компонента List.
Добавление компонента List между ReferenceManyField и Datagrid позволяет массовому выбору / удалению работать после некоторых изменений стиля, однако это вызывает другую проблему: текущая отображаемая страница (т.е. записи 1-10, 11-20 и т. Д.) Сохраняется на ресурс в магазине, и поэтому может возникнуть ситуация, когда магазин говорит, что мы находимся на странице 2, и отображает страницу 2, которая пуста, потому что для заполнения одной страницы достаточно только связанных элементов.
Я что-то здесь упускаю? Или массовый выбор внутри ReferenceManyField в настоящее время невозможен?
export const NetworksShow = (props) => (
<Show title={<NetworksTitle />} actions={<NetworksShowActions />} {...props}>
<ReferenceManyField addLabel={false} target="ipid" reference="acl-network">
<List style={{ margin: '0px -24px -16px -24px' }} {...props} actions={<NetworkACLCardActions ipid={props.id}/>} filter={{ ipid: _.has(props, 'id') ? props.id : undefined }}>
<Datagrid hasBulkActions={true}>
<ReferenceField label="Network" source="ipid" reference="networks">
<TextField source="name" />
</ReferenceField>
<TextField label="URL" source="url" />
<BWChip label="Action" source="wb" />
<EditButton />
<DeleteButton />
</Datagrid>
</List>
</ReferenceManyField>
</Show>
);