如何解决React Admin getOne 不适用于 Api Patform dataProvider
我正在使用后端的 @api-platform API 和他们的 react 管理 样板构建一个 CMS。使用他们的 Hydra dataProvider 调用 getOne 的 Query 方法似乎都不起作用。我尝试了所有钩子和遗留的 组件或 useDataProvider.getOne。行为是 GET URL 生成错误。它不包含资源路径。相反,在创建的 URL 中有一个 undefined。
<Query type="getOne" resource="videos" payload={{ id: '1000' }}>
{({ data,loading,error }) => {
if (loading) {
return <Loading />;
}
if (error) {
return <Error />;
}
return data.name;
}}
</Query>;
也使用 useQuery:
const { data,error } = useQuery({
type: 'getOne',resource: 'videos',payload: { id: "1000"}
});
他们正在生成以下 GET 请求:
Request URL: https://ra-api.testing.company.com/undefined
Request Method: GET
所有其他方法都会生成如下内容:
Request URL: https://ra-api.testing.company.com/api/videos
Request Method: GET
dataProvider 看起来像这样:
export const dataProvider = baseHydraDataProvider(
global.RA_API_ENTRYPOINT,fetchHydra,apiDocumentationParser
);
getLists 或 update/create 等其他方法工作正常。有什么想法吗?
解决方法
Hydra 数据提供程序未将 resource
参数用于 getOne
查询,仅使用 id
:
https://github.com/api-platform/admin/blob/5badc1f19024c1800a60431e575219039b86d0b6/src/hydra/dataProvider.js#L227
这是因为负载中的 id
需要是 IRI,如下所示:
const { data,loading,error } = useQuery({
type: 'getOne',resource: 'videos',payload: { id: '/videos/1000' },});
对于 API Platform Admin(和 Hydra 数据提供者),所有标识符都是 IRI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。