Как организовать подгрузку данных по api по мере необходимости?
Инструментальный вопрос от новичка.
Предположим, что необходимо написать большое react-приложение вроде какой-нибудь CRM-системы.
Приложение будет работать с массой связанных между собой сущностей, рассмотрим простой пример Клиент + Обращение.
Пользователь открывает в браузере страницу списка обращений, в этот момент приложение отправляет запрос к api, получает список, кладет в store, всё как обычно.
Однако, пэйлоад каждого обращения в ответе api содержит только userId автора обращения, поэтому нам нужно дополнительно запросить у api информацию о пользователе(-ях).
Но не каждый же раз запрашивать одних и тех же пользователей? Надо класть их в store и по необходимости смотреть, есть ли они там и если есть брать от туда, если нет - запрашивать.
Но как понять, запрашивался ли конкретный юзер ранее? Как при отсутствии юзера в store понять, что он запрашивался ранее, но такого юзера попросту нет, поэтому его нет в store?
Если юзер заходит на страницу просмотра конкретного обращения, приложение так же должно понять, запрашивать ли у api список комментариев, авторов комментариев, список категорий, возможных статусов и т. п. Пользователь уже мог ранее посещать страницы с другими обращениями и, вероятно, категории уже подгружены. Или не подгружены и надо их запросить? В store могут лежать 100500 комментариев, но как понять есть ли там комментарии нужного обращения? Запрашивались они ранее?
Ну вы поняли.
Мой вопрос не про архитектуру, не надо предлагать хранить где-то историю загруженных ранее данных. Такой велосипед я уже написал. Может существуют гибкие и удобные инструменты для этого?
А как планируется поступать в случае, когда, например, комментарии были запрошены, ты их заново не грузишь и отображаешь их из стора, а на деле там появились новые уже, которые юзер не увидит, пока не обновит страницу? Юзеры могут не обновляять страницы очень долго.
graphql это язык запросов, он не решает мою задачу.
С redux-saga дел не имел, но это же просто продюсер сайд-эффектов, типа thunk.
Мне же нужен готовый инструмент для управления запросами к api, для уменьшения количества запросов. Какой-то промежуточный слой, который решает просить у api что-то или нет в каждый момент времени.
А велосипед для этого у меня уже есть) Хочется что-то более универсальное и гибкое, неужели нет таких инструментов?