访问已通过其他组件中的反应查询获取的数据

问题描述

我是 React Query 的新手,我有一个问题,我一直在查看文档,但我找不到应该如何访问已使用 useQuery() 从另一个组件获取的数据。

我正在从 HomeComponent 获取 const query = useQuery('todos',fetchFunction) 并且我想访问已经在 TodosComponent 中获取的数据。是否可以使用 const query = useQuery('todos',fetchFunction) 再次获取数据,或者是否有类似 redux 之类的数据位于 Store 之类的东西中,以便我可以从任何地方访问它?

;)

解决方法

再次调用 useQuery 绝对是最好的,因为它是创建订阅的唯一方法,因此如果有新数据进入,您的组件将正确重新渲染。您可以使用 {{1 }},但它不会创建订阅。

请注意,queryClient.getQueryData('todos') 不会总是触发数据的获取。你可以自定义 useQuery 来告诉 react-query 一个资源被认为是新鲜的,只要它是新鲜的,数据就只会来自内部缓存。如果您设置 staleTime,则只会进行一次提取,所有其他调用都只会从缓存中读取(手动失效和垃圾收集除外)。

最好将 useQuery 调用提取到自定义挂钩:

staleTime: Infinity
const useTodos = () => useQuery('todos',fetchFunction)
HomeComponent:

const { data } = useTodos()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...