Возможный необработанный отказ от обещания: ошибка: действия должны быть простыми объектами. Используйте пользовательское промежуточное ПО для действий asyn c - PullRequest
0 голосов
/ 07 марта 2020

У меня есть функция, которая предназначена для выполнения различных асинхронных действий на основе установленных входов. Вот моя функция:

const generalApiRequest =(requestUrl, urlType, data={},actionDispatch) =>{
    
  return function(dispatch, getState){
      
      console.log(dispatch);
      adminId = getState().authentication.adminId;
      token = getState().authentication.token;
      
      return hitUrl(requestUrl,urlType, dispatch, data).then((response)=>{
          try{
          if(response.status === 200){
              //dispatch(actionDispatch(response.data));
              actionDispatch();
          } 
          else{
            console.log("Wrong response",response);
            if(response.status === 401){
              console.log('login again, auth failed');
              dispatch(authFailed());
            }
          }
        }
        catch(error){
          console.log(error);
         }
        }
        ,(error)=>{console.log(error)})
     
  }
  
};

Вот также hitUrl (), который необходим для функции:

const hitUrl= async function(requestUrl, urlType,dispatch, data={}){
  try {
    //const requestUrl = apiUrl+ 'application/fetch-dashboard-data'+`/{$adminId}`;
    if(urlType === "get"){
      response = await axios(requestUrl,header(token));
    }
    else {
      response= await axios.post(requestUrl, data, header(token));
    }
     
    return response;
  } catch (error) {
    console.log(error);
          console.log("error status", error.response.status);
          try{
            if(error.response.status === 401){
              dispatch(authFailed());
            }
          }
          catch(newError){
            console.log(newError)
          }
          
  }
 }

У меня также есть функция processApplicant ()

export const processApplicant=(data)=>{
  let requestUrl;
  let urlType = "post";
  let message;
  message = "The user has been successfully deleted"
  requestUrl = apiUrl+ 'application/process/delete';
  let actionDispatch= triggerSuccess(message);
  generalApiRequest(requestUrl,urlType, data, actionDispatch);
}

Теперь я отправил действие ниже в моем компоненте реакции

dispatch(processApplicant({adminId: 2, comment: "No comments", trigger: "Pick", userId: 3}));

При этом я получаю сообщение об ошибке в названии выше (Возможное необработанное отклонение обещания: Ошибка: действия должны быть простыми объектами. Используйте пользовательское промежуточное ПО для асинхронных c действий) , У меня есть Redux Thunk в качестве промежуточного ПО, и он отлично работает для другого запроса. Что я делаю не так, пожалуйста?

1 Ответ

1 голос
/ 07 марта 2020

Ваш процессApplicant настроен неправильно.

export const processApplicant = (data) => {
    return (dispatch) => {
        let requestUrl;
        let urlType = "post";
        let message;
        message = "The user has been successfully deleted"
        requestUrl = apiUrl + 'application/process/delete';
        let actionDispatch = triggerSuccess(message);
        dispatch(generalApiRequest(requestUrl, urlType, data, actionDispatch));
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...