【发布时间】:2018-09-17 06:30:05
【问题描述】:
在我们的应用程序中,我们尝试使用ReferenceField中的Datagrid来创建/修改/删除相关记录,如https://marmelab.com/blog/2018/07/09/react-admin-tutorials-form-for-related-records.html所示
教程中显示的所有功能都运行良好,除了最近的 react-admin 更新中添加的批量操作。单击这些复选框会给出
未捕获的 TypeError:_this.props.onToggleItem 不是函数
我相信这是因为 onToggleItem 属性通常由 List 组件提供,但是在此应用程序中,Datagrid 没有父 List 组件。
在 ReferenceManyField 和 Datagrid 之间添加 List 组件允许在对样式进行一些更改后进行批量选择/删除,但这会导致另一个问题:当前显示的页面(即记录 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>
);
【问题讨论】:
标签: react-admin