У меня есть архитектурный вопрос / вопрос передового опыта в отношении реакции и избыточности.
Я использую промежуточное программное обеспечение Redux для запроса сервиса GraphQL и предоставления результатов в реквизитах для подключенных компонентов. Одним из преимуществ graphql является возможность извлекать только ту информацию, которая вам нужна, используя формат их запросов.
У меня есть страница со списком сущностей, и когда вы щелкаете конкретную сущность, вы получаете страницу с подробным описанием сущности с идентификатором в строке запроса.
Я хочу, чтобы массив сущностей в моем состоянии был моим единственным источником правды, а свойство selectedEntityId служило поиском в этом списке сущностей.
Моя проблема в том, что список сущностей на странице списка - это просто имя и описание, в то время как страница просмотра содержит гораздо больше информации.
Решения, которые я могу придумать:
1) Получить всю информацию об объектах (не только имя и описание) на странице списка (и странице просмотра). Проблема в том, что я бы запрашивал кучу информации, которая мне не нужна, на странице списка, что противоречит идее graphql.
2) Имеют 2 свойства в моем штате. Один будет содержать объекты только с именем и описанием, а другое свойство будет содержать список объектов с дополнительной информацией. Проблема с этим решением в том, что у меня есть 2 источника правды.
3) Я могу «жениться» на двух списках сущностей, поэтому, если я перемещаюсь от списка к странице просмотра, я могу насыщать уже существующий список сущностей со страницы списка сущностями, которые я получаю со страницы просмотра (сущности со многими другими свойствами, кроме имени и описания) и используют этот список в качестве моего единственного источника правды. Кажется, это лучшее решение, но я не знаю, как это сделать.
Может кто-нибудь пролить свет на ситуацию?
Спасибо!