Rumah  >  Soal Jawab  >  teks badan

React Native - Dapatkan cache panggilan

Saya sedang membina apl dalam React Native yang membuat panggilan ambil yang bergantung pada pelayan untuk mendapatkan maklumat terkini. Saya perasan bahawa ia seolah-olah menyimpan cache respons, dan jika saya menjalankan panggilan ambil sekali lagi, ia mengembalikan respons yang dicache dan bukannya maklumat baharu daripada pelayan.

Fungsi saya adalah seperti berikut:

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

Fungsi api.js yang saya panggil adalah seperti berikut:

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


P粉585541766P粉585541766334 hari yang lalu620

membalas semua(2)saya akan balas

  • P粉548512637

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

    Jawapan Manosim tidak berkesan untuk saya, tetapi membawa saya ke jalan yang sangat berfungsi:

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

    Ini menyelesaikan masalah.

    balas
    0
  • P粉738248522

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

    Anda boleh menetapkan 标头 untuk mengelakkan permintaan daripada dicache. Contoh di bawah:

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

    balas
    0
  • Batalbalas