0
votes

Afficher la filante de chargement avec axios et réagir (réchauffé possible)

Mon objectif est d'afficher une fileuse de chargement lorsqu'une demande HTTP est appelée. Je veux faire cela globalement, cela signifie que lorsque n'importe quel composant appelle une API, est automatique pour montrer à TeH Spinner, de préférence, sans code additionnel pour contrôler la spinner.

J'utilise React et Axios. Je sais sur les intercepteurs d'Axios. P>

Ma structure réelle: P>

import axios from "axios";

const serviceBase = () => {

    const api = axios.create({
        baseURL: 'https://xxxxx.xxxxx.com/xxxxxx/'
    });

    api.interceptors.request.use(async (config) => {
        try{
            // In this moment, show the spinner
            // showLoading();
        }
        catch(e)
        {
            alert('Error request' + e);
        }

        return config;
    });

    api.interceptors.response.use(async (config) => {
        try {
            // In this moment, hide the spinner
            // hideLoading();
        }
        catch(e)
        {
            alert('Error response' + e);   
        }

        return config;
    });

    return api;
};

export default serviceBase;


1 commentaires

Voici une réponse avec une démonstration en direct: Stackoverflow.com/Questtions/48892435/...


3 Réponses :


0
votes

Vous pouvez essayer d'utiliser réact de contexte et méthode de partage qui changera la visibilité de votre chargement composant.


0 commentaires

0
votes

Je pense que la meilleure façon de réaliser serait d'utiliser Redux. Vous pouvez avoir un réducteur "Statut de demande" d'une sorte de tri et une valeur dans votre magasin qui indique si une demande est envoyée.

pseudo-code: xxx

Et en fonction de l'action, vous passez la valeur de votre statut de demande dans votre magasin, reportez-vous à vos composants.


1 commentaires

Je pense que le redux est le chemin. Mais, par exemple, je vais avoir un magasin pour sauver l'état de chargement de la fileuse. Donc, je dois connecter la classe de base de service et le composant de chargement avec une action, non? Mais lorsque je connecte la classe de base de service, j'ai perdu les méthodes Axios, puis je ne vous demande plus, car le retour est la méthode Connect Redux et non l'objet de configuration d'Axios. Avez-vous une idée de comment faire ça?



0
votes

Ceci est très pratique en utilisant REDUX et THUNK.

Mais, vous pouvez utiliser un hack comme, p> xxx pré>

et en rendu, p>

render () {
 return (
  {isLoading && <Spinner />}
  {... handle the rest} 
 )
}


0 commentaires