web-dev-qa-db-fra.com

Redux - comment appeler une action et attendre qu'elle soit résolue

J'utilise react native + redux + redux-thunk Je n'ai pas beaucoup d'expérience avec redux et react native

J'appelle une action à l'intérieur de mon composant.

this.props.checkClient(cliente);

if(this.props.clienteIsValid){
   ...
}

et dans cette action, il y a un appel à une API qui prend quelques secondes.

export const checkClient = (cliente) => {
    return dispatch => {

        axios.get(`${API_Host}/api/checkclient`, header).then(response => {

            dispatch({type: CHECK_CLIENT, payload: response.data }); //valid or invalid

        }).catch((error) => {  });

    }
}

Ma question est de savoir comment puis-je retarder le retour de l'action jusqu'à ce que la réponse de l'API soit terminée? J'ai besoin de la réponse api pour savoir si le client est valide ou invalide. Autrement dit, j'ai besoin que l'action soit résolue, puis je vérifie que le client est valide ou non valide.

6
Jobsdev

Je ne comprends pas le problème, mais cela pourrait peut-être aider

export const checkClient = (cliente) => {
  return dispatch => {
    dispatch({type: CHECK_CLIENT_PENDING });

    axios.get(`${API_Host}/api/checkclient`, header).then(response => {

        dispatch({type: CHECK_CLIENT, payload: response.data }); //valid or invalid

    }).catch((error) => {  });

   }
}

...


 this.props.checkClient(cliente);

 if(this.props.clienteIsPending){
  ...
 }

 if(this.props.clienteIsValid){
  ...
 }
1
yasintz