React-Query useQuery 是缓存响应

React-Query useQuery is caching response

我有以下代码

 const { isLoading, error, data: calculatorProducts } = useQuery('fetchSomething', ()=> fetchFunc())

当我访问我的主页时应该调用这个函数,但是当从另一个页面返回到这个路由时这个请求没有被触发并且我没有得到新的数据。我想要的是每次都像 useEffect

一样调用这个查询

如果缓存中有数据,则始终返回缓存中的数据。此外,react-query 会在某些情况下在后台更新陈旧的查询,例如当组件安装时。这种技术称为 stale-while-revalidate。

默认情况下,所有查询都会立即过时,因此如果您从不同的页面转到路由,您应该从缓存中获取数据并且仍然会在开发工具中看到请求。如果没有,那么也许您的组件没有真正安装?

如果您希望在卸载所有使用此数据的组件时从缓存中删除数据,您可以设置cacheTime: 0。但这意味着当你回来时你会遇到一个带有微调器的硬加载,这是 react-query 试图避免的

至于现在,初始数据已缓存,因此您还必须设置: initialData: undefined 这使我的数据变得新鲜(它需要 undefined 作为缓存的初始数据,所以每次它都需要新鲜数据,因为缓存是“空的”)