Сводка проблемы
Я работаю над проектом, в котором мы используем множество запросов API, и мы ожидаем, что это будет еще больше масштабироваться с множеством новых конечных точек. Проект построен с использованием Redux и Hooks. Мы хотели бы отделить запросы API от компонентов, поэтому мы стремимся все упростить. Однако возникает проблема: существует множество шаблонов, например: FETCH_DATA_REQUEST, FETCH_DATA_SUCCESS, FETCH_DATA_ERROR
, которые необходимо воспроизвести для каждой конечной точки. Кроме того, мы должны обрабатывать загрузку, успешность и ошибку для всех из них. Кажется, это очень много кода, особенно по мере роста приложения.
Что мы пробовали
Мы пытались создать собственный API Hook, который использует useReducer
за сцены и возвращает динамически сгенерированные переменные loading
, success
и error
. Этот хук предоставляет метод sendRequest
, который может использоваться в компонентах как таковых:
sendRequest("GET", `${BASE_URL}/api/endpoint`);
Он работает хорошо, но есть проблема, мы создаем конечные точки API в компоненте, и это то, что мы будем хотелось бы изменить. Вот почему мы обратились к redux.
В идеале мы хотели бы отделить лог c загрузки и ошибок от редукторов, и мне интересно, есть ли у кого-нибудь идея (или знакомый пакет), которая может помочь уменьшить шаблон и достичь этой цели.