Maison  >  Questions et réponses  >  le corps du texte

React Native - Obtenir le cache des appels

Je crée une application dans React Native qui effectue un appel de récupération qui s'appuie sur le serveur pour obtenir les dernières informations. J'ai remarqué qu'il semble mettre en cache la réponse et si j'exécute à nouveau l'appel de récupération, il renvoie la réponse mise en cache au lieu des nouvelles informations du serveur.

Ma fonction est la suivante :

goToAll() {
  AsyncStorage.getItem('FBId')
    .then((value) => {
      api.loadCurrentUser(value)
        .then((res) => {
          api.loadContent(res['RegisteredUser']['id'])
            .then((res2) => {
              console.log(res2);
              this.props.navigator.push({
                component: ContentList,
                title: 'All',
                passProps: {
              content: res2,
            user: res['RegisteredUser']['id']
          }
        })
      });
    });
  })
  .catch((error) => {console.log(error);})
  .done();
}

La fonction api.js que j'ai appelée est la suivante :

loadContent(userid){
  let url = `http://####.com/api/loadContent?User_id=${userid}`;
  return fetch(url).then((response) => response.json());
}


P粉585541766P粉585541766333 Il y a quelques jours618

répondre à tous(2)je répondrai

  • P粉548512637

    P粉5485126372023-10-22 21:31:24

    La réponse de Manosim n'a pas fonctionné pour moi, mais m'a conduit sur un chemin qui a vraiment fonctionné :

    fetch(url, {
      headers: {
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': 0
      }
    })

    Cela a résolu le problème.

    répondre
    0
  • P粉738248522

    P粉7382485222023-10-22 12:07:09

    Vous pouvez définir 标头 pour empêcher la mise en cache des demandes. Exemple ci-dessous :

    return fetch(url, {
      headers: {
        'Cache-Control': 'no-cache'
      }
    }).then(function (res) {
      return res.json();
    }).catch(function(error) {
      console.warn('Request Failed: ', error);
    });

    répondre
    0
  • Annulerrépondre