Как отправить два действия (одно асинхронное), в redux-thunk? - PullRequest
0 голосов
/ 11 мая 2018

Отправка нескольких действий в redux-thunk и получение i nfinite loop .
Я пытаюсь включить счетчик до того, как запрос переходит к серверной части, и останавливать счетчик после того, как запрос завершится успешно или не удастся.
Кто-нибудь знает, где я совершил ошибку?

Мой код выглядит следующим образом.

logic.js 

import * as actions from "./actions";

export const getData = () => {
  return dispatch => {
    dispatch(actions.startSpinner());
    setAuthorizationToken(getToken());
    axiosInstance
      .get("/data")
      .then(response => {
        dispatch(actions.stopSpinner()); //I guess this is problem ?
        dispatch(actions.getData(response.data));
      })
      .catch(err => {
        console.log(err);
        dispatch(actions.stopSpinner());
      });
  };
};

И файл actions.js

export const startSpinner = () => {
  return { type: actionTypes.START_SPINNER };
};
export const stopSpinner = () => {
  return { type: actionTypes.STOP_SPINNER };
};

 export const getData = data => {
  return {
    type: actionTypes.GET_DATA,
    payload: data
 };
   };

и редуктор для него spinner.js

import actionTypes from "../actionTypes";

export default (state = false, action) => {
  switch (action.type) {
    case actionTypes.START_SPINNER: {
      return (state = true);
    }
    case actionTypes.STOP_SPINNER: {
      return (state = false);
    }
    default: {
      return state;
    }
  }
};

и редуктор для данных dataReducer.js

import actionTypes from "../actionTypes";

const defaultState = [];

export default (state = defaultState, action) => {
  switch (action.type) {
    case actionTypes.GET_DATA: {
      let newState = [...action.payload];
      return newState;
    }
    default: {
      return state;
    }
  }
};
...