【问题标题】:React Admin - Handle data when API response is not foundReact Admin - 在未找到 API 响应时处理数据
【发布时间】:2020-03-22 12:06:58
【问题描述】:

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

我正在为创建操作而苦苦挣扎。

问题是 API 不维护创建的新元素,所以当我进行 POST 操作时,api 响应新记录,例如:

{ 
 "first_name":"John",
 "last_name":"Doe",
 "email":"jdoe@mail.com",
 "id":"115",
 "createdAt":"2019-11-26T21:36:40.165Z"
}

但在那之后,默认情况下 React Admin 重定向到编辑页面,向我显示新数据,然后使用响应的 id 进行 getOne 调用,但由于 API 没有保存我的新元素,我得到一个当 React Admin 执行 GEThttps://reqres.in/api/users/115 时出现 404。

我想问是否可以存储和获取该临时数据并且不进行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】:

    我不确定我是否理解:您的 API 以 OK 响应响应 POST,但随后对同一资源标识符的 GET 调用不返回记录?如果是这种情况,您的 API 不是 RESTful,并且 react-admin 可能无法适应您的用例。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2019-08-29
      • 1970-01-01
      • 2019-09-24
      • 2018-11-12
      • 2019-02-23
      • 1970-01-01
      相关资源
      最近更新 更多