Heim  >  Fragen und Antworten  >  Hauptteil

React Native – Anruf-Cache abrufen

Ich erstelle eine App in React Native, die einen Abrufaufruf durchführt, der sich auf den Server verlässt, um die neuesten Informationen zu erhalten. Mir ist aufgefallen, dass die Antwort scheinbar zwischengespeichert wird. Wenn ich den Abrufaufruf erneut ausführe, wird die zwischengespeicherte Antwort anstelle der neuen Informationen vom Server zurückgegeben.

Meine Funktion ist wie folgt:

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();
}

Die von mir aufgerufene api.js-Funktion lautet wie folgt:

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


P粉585541766P粉585541766385 Tage vor672

Antworte allen(2)Ich werde antworten

  • P粉548512637

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

    Manosim 的答案对我来说不起作用,但让我走上了一条确实有效的解决方案:

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

    这解决了问题。

    Antwort
    0
  • P粉738248522

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

    您可以设置标头以防止请求被缓存。 下面的例子:

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

    Antwort
    0
  • StornierenAntwort