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

时间:2021-07-11 12:49:51

标签: reactjs axios react-query

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

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

;)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

const { data } = useTodos()