Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 反应本机-缓存获取调用_Caching_Reactjs_Fetch_React Native - Fatal编程技术网

Caching 反应本机-缓存获取调用

Caching 反应本机-缓存获取调用,caching,reactjs,fetch,react-native,Caching,Reactjs,Fetch,React Native,我正在react native中构建一个应用程序,它可以根据来自服务器的最新信息进行获取调用。我注意到它似乎在缓存响应,如果我再次运行该fetch调用,它将返回缓存的响应,而不是来自服务器的新信息 我的职能如下: goToAll(){ AsyncStorage.getItem('FBId') 。然后((值)=>{ api.loadCurrentUser(值) 。然后((res)=>{ 加载内容(res['RegisteredUser']['id']) 。然后((res2)=>{ console.

我正在react native中构建一个应用程序,它可以根据来自服务器的最新信息进行获取调用。我注意到它似乎在缓存响应,如果我再次运行该fetch调用,它将返回缓存的响应,而不是来自服务器的新信息

我的职能如下:

goToAll(){
AsyncStorage.getItem('FBId')
。然后((值)=>{
api.loadCurrentUser(值)
。然后((res)=>{
加载内容(res['RegisteredUser']['id'])
。然后((res2)=>{
console.log(res2);
这个是.props.navigator.push({
组件:ContentList,
标题:“全部”,
通行证:{
内容:res2,,
用户:res['RegisteredUser']['id']
}
})
});
});
})
.catch((错误)=>{console.log(错误);})
.完成();
}
来自api.js im调用的函数如下:

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

您可以设置
标题
以防止缓存请求。 示例如下:

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

Manosim的回答对我不起作用,但让我找到了一个可行的解决方案:


这就解决了问题。

我在react native(Android)和使用clojurescript(而不是js)获取时也遇到了类似的问题。 添加:缓存“no store”(不在标题中)停止了该行为(在Android应用程序上缓存获取数据)

我认为js中的代码应该是这样的:

fetch(url, {'cache':'no-store'})

无缓存
并不意味着“不缓存”,它意味着在使用缓存资源之前必须与服务器进行检查(或“重新验证”。“请改用
无存储
”。src:
fetch(url, {'cache':'no-store'})