React-query 缓存不会在页面刷新时持续存在

Don*_*al0 5 reactjs react-query

我想在useQuery请求成功后设置 24 小时缓存。

但是当我刷新页面时,缓存就消失了。我看到它是因为每次在我的服务器上命中该路由时,我都会 console.log 一条消息。

如何防止这种行为并实现真正的缓存?

这是代码:

   import { useQuery } from "react-query";
import { api } from "./config";

const _getUser = async () => {
  try {
const res = api.get("/get-user");
return res;
  } catch (err) {
return err;
  }
};

export const getUser = () => {
  const { data } = useQuery("contact", () => _getUser(), {
cacheTime: 1000 * 60 * 60 * 24,
  });
  return { user: data && data.data };
};


// then in the component:
  const { user } = getUser();

return (
<div >
  hello {user?.name}
</div>
Run Code Online (Sandbox Code Playgroud)

我也尝试过替换cacheTimestaleTime.

TkD*_*odo 18

如果重新加载浏览器,缓存就会消失,因为缓存位于内存中。如果您想要持久缓存,可以尝试(实验性)persistQueryClient 插件:https ://react-query.tanstack.com/plugins/persistQueryClient

  • 很酷,但从我读到的来看,它基本上只是一个本地存储项目。所以它根本不安全。是否有另一种方法可以使缓存以安全的方式持久存在? (2认同)
  • 您想将其存储在哪里? (2认同)
  • 前端没有任何存储是安全的 - 您可以使用 Crypto API 加密数据。您正在寻找的听起来像是在选项卡之间传输数据的广播插件:https://react-query.tanstack.com/plugins/broadcastQueryClient (2认同)