Подтвердить что ты не робот

React Native - выбор из кэша

Я создаю приложение в native native, которое делает вызовы извлечения, которые полагаются на самую последнюю информацию с сервера. Я заметил, что, похоже, он кэширует ответ, и если я снова запустил этот выбор, он возвращает кешированный ответ, а не новую информацию с моего сервера.

Моя функция такова:

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

а функция из вызова api.js im выглядит следующим образом:

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

Ответ 1

Вы можете установить Header, чтобы предотвратить кеширование запроса. Пример ниже:

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

Ответ 2

Пропустить этот ответ! [Как удалить принятый ответ - это неправильно (хотя в то время это было "технически правильно", поскольку вы не могли изменять заголовки. "Функция не является недостатком" бит все еще не прав")

URL с теми же параметрами должен возвращать тот же результат: эта функция, а не ошибка;) В Fetch API я могу я не вижу ничего, чтобы помочь вам, но если вам нужно "перекрыть кеш", вы можете добавить дополнительный параметр в конец URL-адреса:

let url = `http://####.com/api/loadContent?User_id=${userid}&t=${Date.now()}`;