Redux-Thunk: асинхронная отправка не работает - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь создать приложение на реагирующем языке, которое предполагает, что пользователь принимает два входа, а затем делает запрос к API и получает информацию о двух входах. У меня были проблемы с redux и redux-thunk и особенно с async действиями.

Это код в моем приложении, с которым у меня возникли проблемы

export const fetchData = url => {
  console.log("start Fetching");
  return async dispatch => { // this is where the problem is
    dispatch(fetchingRequest());
    try {
      const response = await fetch("https://randomuser.me/api/?results=10");
      const json = await response.text();
      if (response.ok) {
        dispatch(fetchingSuccess(json));
        console.log("JSON", json);
      } else {
        console.log("fetch did not resolve");
      }
    } catch (error) {
      dispatch(fetchingFailure(error));
    }
  };
  console.log("Fetched data");
};

После отладки функции я обнаружил, что при вызове функции fetchData функция будет выполняться, но возвращаемый async dispatch имеет поведение undefined.

Выходные данные в отладчике при вызове функции должны быть

start Fetching
JSON file information/Error

но вывод в отладчике на самом деле

start Fetching

1 Ответ

0 голосов
/ 01 июля 2019

Почему бы просто не использовать синтаксис Promise?

  fetch("https://randomuser.me/api/?results=10")
    .then(response => {
      if (response.ok) {
        // do something
      }
    })
    .catch(e => console.log('fetch did not resolve'));
...