Как лучше всего использовать Redux для обработки полных асинхронных сервисов?

Я работал с React - Redux около 1 года. Интересно, как лучше всего обрабатывать асинхронную службу с использованием Redux с ошибкой, загрузкой ... и как это реализовать? В настоящее время я использую Promise an axios для обработки API и вызова 3-х действий, успешного и неудачного:

      export function requestExample(page = 1, category = "") 
    return dispatch => {
        dispatch(get_Request()); //set isLoading = true
        request.get(`/posts/myPosts`).then( //request is an instance of axios
            response => {
                dispatch(get_Success(response.data)); //set isLoading = false, data = payload.data
            }
        ).catch(error=>{dispatch(get_Failure())}) //set isLoading = false, data = []
    }
}

Мой объект формы ответа:

      {data: [], isLoading: false}

некоторое время использую:

      {data: [], isLoading: false, isLoadDone: false}

Я обрабатываю ошибку, используя перехватчик axios при создании экземпляра axios, складываю все свои ошибки и показываю их как модальные, когда они произошли.

      request.interceptors.request.use(
  function (config) {
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

request.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.status !== 200)
      store.dispatch(openModal("alert", { title: "Lỗi", text: `Error code: ${error.status} <br> Error content: ${error.statusText} `, type: "Fail" }));
    return Promise.reject(error);
  }
);

Я хочу несколько комментариев о моей структуре и узнать больше о другом способе обработки асинхронной службы с лучшей производительностью и памятью. Спасибо!

0 ответов

Другие вопросы по тегам