Должен ли dataProvider React-admin применять форматирование к данным?

Вопрос носит концептуальный характер: должен ли dataProvider применять форматирование к данным перед их возвратом во внешний интерфейс react-admin, или dataProvider должен играть роль только для сборщика данных и всегда должен возвращать данные в том формате, в котором они поступают из серверной службы? Что вы думаете?

Что бы вы сделали, если бы вы получали данные из серверной части глубоко вложенными, в сложной структуре, и вам нужно, чтобы они были проще для отображения? Где бы вы его уменьшили / отформатировали:

  1. В dataProvider сразу после его получения с сервера и перед отправкой в ​​пользовательский интерфейс React-admin, или
  2. В пользовательском интерфейсе (он же вид ресурсов) или, может быть,
  3. Используя настраиваемый редуктор: https://marmelab.com/react-admin/Actions.html#using-a-custom-reducer

Как вы считаете, как это сделать наиболее элегантно и концептуально?


person Ickata    schedule 22.01.2019    source источник


Ответы (1)


Краткий ответ: вы можете сделать и то, и другое в зависимости от ваших потребностей.

На самом деле это хороший вопрос, ответ может быть таким: это зависит от варианта использования.

Во-первых, если вы говорите об общем поставщике данных, связанном с определенным форматом API (скажем, ODATA или GraphQL), лучше преобразовать данные в поставщике данных. Тем более, если этот поставщик данных имеет открытый исходный код.

Как сказано в документации:

[Поставщик данных] - это место для преобразования запросов данных в запросы HTTP и ответов HTTP в ответы данных.

Тем не менее, если вы говорите о конкретном поставщике данных, который создан для вашего собственного пользовательского API (или комбинации или API), вы можете сделать и то, и другое: преобразование поставщика данных или использование пользовательских редукторов, или и то, и другое.

Нет ничего плохого в том, чтобы преобразовывать данные в поставщике данных. Вам просто нужно знать, что React Admin кэширует данные из Provider в своем хранилище redux и делает некоторые причудливые вещи, такие как оптимистичный рендеринг или отменить действия.

person Kmaschta    schedule 22.01.2019