获取 ReferenceManyField 计数?

ful*_*ket 5 react-admin

如何显示“ReferenceManyField”组件的计数?

事情是这样的,我列出了组织,我希望每个组织都有他们的用户数。

获取组织:

GET /organizations?filter={}&range=[0,24]&sort=["name","ASC"]
Run Code Online (Sandbox Code Playgroud)

获取每个组织的用户:

...
GET /users?filter={"uuid_organization":"1117b0a0-6ec7-40e3-9ee6-49d121c27111"}&range=[0,99]&sort=["email","ASC"]
...
Run Code Online (Sandbox Code Playgroud)
    <List
        {...props}
        filters={<OrganizationFilter />}
        sort={{ field: 'name', order: 'ASC' }}
        perPage={25}
    >
        <Responsive
            xsmall={<MobileGrid />}
            medium={
                <Datagrid expand={<OrganizationShow />}>
                    <OrganizationLinkField />
                    <ReferenceManyField label="Users" reference="users" target="uuid_organization" sort={{ field: 'email', order: 'ASC' }}>
                        // PRINT: 102 users
                    </ReferenceManyField>
                    <EditButton />
                </Datagrid>
            }
        />
    </List>
Run Code Online (Sandbox Code Playgroud)

我不确定我是否应该这样做,这似乎效率低下且矫枉过正。你认为呢?

提前致谢。

小智 2

您选择的方法是react-admin实现它以通过外键获取连接数据的方法,恕我直言,这并不是太大的杀伤力,因为在数据库级别上您仍然需要查询其他表。

根据文档,响应格式有一个额外的响应属性,GET_MANY_REFERENCE称为totalGET_MANY_REFERENCE { data: {Record[]}, total: {int} }

字段ReferenceManyField组件使用此响应格式来检索数据,并使用当前记录 ID 作为所引用资源的外键(父 ID)。

深入研究react-admin 最新版本 2.9.0 的代码,我发现它将ReferenceManyFieldprops 传递给它的子级,这取决于您如何处理数据(例如List, DataGrid),其中一个 props 是total(记录计数),默认情况下传递给Pagination组件。

如果您不想使用其他任何东西,您可以创建自己的简单功能组件来处理这些道具:

import React from 'react';

const UserTotal = props => <div>User count: {props.total}</div>;

export default UserTotal;
Run Code Online (Sandbox Code Playgroud)

以及您的参考字段的用法:

<ReferenceManyField 
  label="Users" 
  reference="users" 
  target="uuid_organization" 
  sort={{ field: 'email', order: 'ASC' }}
>
  <UserTotal />
</ReferenceManyField>
Run Code Online (Sandbox Code Playgroud)