axios 为什么我从JSON在线文件获取请求在新渲染时不会刷新?

yuvru6vn  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(200)

我正在对一个存储在Azure blob上的json文件执行以下请求。

  1. const getDatas = () => {
  2. axios
  3. .get('https://randomname.blob.core.windows.net/public/data_home_page.json')
  4. .then(({ data }) => {
  5. setStats(data)}
  6. )
  7. .catch((er) => console.log('error'))
  8. }

我将此函数嵌套在useEffect挂接中,

  1. useEffect(() => {
  2. getDatas()
  3. }, [])

它运行得很好,因为我可以获取数据并显示它。我的问题是它在页面/组件呈现时从不刷新。唯一的解决方案是清除缓存。
我怎样才能在不清空所有用户缓存的情况下强制调用获取最新数据?为了更好地理解为什么会这样?

1tu0hz3e

1tu0hz3e1#

如果您将正确的标头添加到Axios调用中,则应禁用该高速缓存。

  1. headers: {
  2. 'Cache-Control': 'no-cache',
  3. 'Pragma': 'no-cache',
  4. 'Expires': '0',
  5. }

完整的Axios示例

  1. axios.get(`https://randomname.blob.core.windows.net/public/data_home_page.json`, {
  2. headers: {
  3. 'Cache-Control': 'no-cache',
  4. 'Pragma': 'no-cache',
  5. 'Expires': '0',
  6. }
  7. })
  8. .then(({ data }) => {
  9. setStats(data);
  10. })
  11. .catch((er) => console.log("error"));
  12. };

示例:https://codesandbox.io/s/flamboyant-resonance-dhq2fi?file=/src/App.js

展开查看全部

相关问题