React Native – Anruf-Cache abrufen
P粉585541766
P粉585541766 2023-10-21 23:44:23
0
2
681

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粉585541766
P粉585541766

Antworte allen(2)
P粉548512637

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

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

这解决了问题。

P粉738248522

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

return fetch(url, {
  headers: {
    'Cache-Control': 'no-cache'
  }
}).then(function (res) {
  return res.json();
}).catch(function(error) {
  console.warn('Request Failed: ', error);
});
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage