React-admin 的 dataProvider 是否应该对数据应用格式?

Should React-admin's dataProvider apply formatting over the data?

这个问题是概念性的,dataProvider 是否应该在 return 将数据发送到 react-admin 的前端之前对数据应用格式,或者 dataProvider 必须只扮演数据获取器的角色并且必须始终 return来自后端服务的格式的数据?你怎么看?

如果后台获取的数据嵌套很深,结构复杂,需要更简单的展示,你会怎么办?你会在哪里 reduce/format 它:

  1. 在 dataProvider 中,在从服务器接收到数据后发送给 React-admin 之前UI,或者
  2. 在UI(a.k.a。资源视图)或者可能
  3. 通过使用自定义减速器:https://marmelab.com/react-admin/Actions.html#using-a-custom-reducer

在您看来,最优雅、最概念化的正确方法是什么?

简短回答:您可以根据需要同时执行这两种操作。

这其实是一个很好的问题,答案可能是:这取决于用例。

首先,如果您谈论的是与特定 API 格式(例如 ODATA 或 GraphQL)相关的通用数据提供程序,则最好在数据提供程序中转换数据。如果此数据提供者是开源的,则更是如此。

作为the documentation says:

[A data provider] is the place to translate data queries to HTTP requests, and HTTP responses to data responses.

就是说,如果您谈论的是为您自己的自定义 API(或组合或 APIs)制作的特定数据提供者,您可以同时进行:数据提供者转换或使用自定义减速器,或两者兼而有之。

在数据提供者中进行数据转换没有错。您只需要知道 React Admin 将来自 provide 的数据缓存在其 redux 存储中并执行一些奇特的操作,例如 optimistic rendering or undo actions.