微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 List 资源和 Datagrid 中显示项目的 ID 而不是对象的 IRI?

如何解决如何在 List 资源和 Datagrid 中显示项目的 ID 而不是对象的 IRI?

我注意到,每次在 List 资源或 Datagrid 组件中显示项目时,元素的 ID 属性都会显示为 IRI 字符串。

IRI IDs

我了解这是由于 HydraAdminJSON-LD 内容协商之间的关系:

向 API 发送正确的 HTTP 请求并使用 Hydra 和 JSON-LD 格式对其进行解码

但我的(简单)问题是:如何显示 ID 而不是整个上下文?我只希望在 Datagrid 或 List 资源中显示最后一部分(唯一 ID 本身)列,但即使我的 API 返回整个 ID 属性无法显示,我也绝不能这样做(下面的示例图像)。无论如何,由于Hydra和JSON-LD关系,始终显示“@id”(字符串)的值。

Example of the resource comments of my API

Example of elements in a DataGrid

解决方法

调试响应头并使用 useListContext 我能够发现数据对象中有一个名为 originId 的注入属性,并且可以显示原始 ID 而不是将其引用为“@id”作为默认值用作源“originId”而不是“id”的属性 ID。

enter image description here

在 DataGrid 中我使用了 source="originId"

...

const {data,ids,basePath} = useListContext();
    return (


            <Datagrid fullWidth>
                // here is the magic,use originId instead id
                <TextField source={"originId"} label={"ID"}/>
                <TextField source={"created_at"} label={"Data"}/>
                <TextField source={"author"} label={"Autor"}/>
                <TextField source={"content"} />
                <TextField source={"is_public"} />
            </Datagrid>


    )

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。