如何解决如何在 List 资源和 Datagrid 中显示项目的 ID 而不是对象的 IRI?
我注意到,每次在 List 资源或 Datagrid 组件中显示项目时,元素的 ID 属性都会显示为 IRI 字符串。
我了解这是由于 HydraAdmin 和 JSON-LD 内容协商之间的关系:
向 API 发送正确的 HTTP 请求并使用 Hydra 和 JSON-LD 格式对其进行解码
但我的(简单)问题是:如何显示 ID 而不是整个上下文?我只希望在 Datagrid 或 List 资源中显示最后一部分(唯一 ID 本身)列,但即使我的 API 返回整个 ID 属性无法显示,我也绝不能这样做(下面的示例图像)。无论如何,由于Hydra和JSON-LD关系,始终显示“@id”(字符串)的值。
解决方法
调试响应头并使用 useListContext 我能够发现数据对象中有一个名为 originId 的注入属性,并且可以显示原始 ID 而不是将其引用为“@id”作为默认值用作源“originId”而不是“id”的属性 ID。
在 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>
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。