React Admin-在未找到API响应时处理数据

问题描述 投票:0回答:1

我正在使用React Admin和Reqres作为我的REST api。

我正在努力执行create动作。

问题是API不维护创建的新元素,因此当我执行POST操作时,api响应将带有新记录,例如:

{ 
 "first_name":"John",
 "last_name":"Doe",
 "email":"[email protected]",
 "id":"115",
 "createdAt":"2019-11-26T21:36:40.165Z"
}

但是在此之后,默认情况下,React Admin重定向到编辑页面,向我显示新数据,然后使用响应的ID进行getOne调用,但是由于API没有保存我的新元素,所以我得到了404当React Admin将GET设置为https://reqres.in/api/users/115时。

我想问的是是否可以存储和获取该临时数据,并且不进行getOne调用以避免该错误?另外,我如何列出新用户?因为当React管理员调用getList时,该新元素将不在该列表中。

我有数据提供者的基本知识:

create: (resource, params) => httpClient(`${apiUrl}/${resource}`, {
  method: 'POST',
  body: JSON.stringify(params.data),
}).then(({ json }) => ({
  data: { ...params.data, id: json.id },
})),

getOne: (resource, params) => httpClient(`${apiUrl}/${resource}/${params.id}`).then(({ json }) => ({
  data: json.data,
})),

谢谢。

reactjs react-admin
1个回答
0
投票

我不确定我是否理解:您的API对POST的答复为OK,但是对相同资源标识符的后续GET调用不会返回记录?如果是这种情况,则您的API不是RESTful的,并且react-admin可能不适合您的用例。

我看到2种可能的解决方法:

  1. Create组件中,添加redirect="list"属性以重定向到列表而不是详细视图。这样,即使新记录将很快出现(乐观渲染)然后消失(一旦GET请求的响应到达而没有新记录),界面也不会中断。您还可以通过设置undoable=false禁用乐观渲染,这样可以消除闪烁
  2. 在您的dataProvider.create()(或react-admin 2.x中的CREATE)中,请不要在API响应到达后立即返回。相反,每隔x秒对服务器执行一次ping操作,以查看该帖子是否最终对GET请求可见,只有这样,您的dataProvider Promise才应返回
© www.soinside.com 2019 - 2024. All rights reserved.