我是 React Query 的新手,我有一个问题,我一直在查看文档,但我找不到应该如何访问已使用 useQuery() 从另一个组件获取的数据。< /p>
我正在从 HomeComponent 获取 const query = useQuery('todos', fetchFunction)
并且我想访问已经在 TodosComponent 中获取的数据。是否可以使用 const query = useQuery('todos', fetchFunction)
再次获取数据,或者是否有类似 redux 之类的数据位于 Store 之类的东西中,以便我可以从任何地方访问它?
;)
答案 0 :(得分:0)
再次调用 useQuery
绝对是最好的,因为它是创建订阅的唯一方法,因此如果有新数据进入,您的组件将正确重新渲染。您可以使用 {{1 }},但它不会创建订阅。
请注意,queryClient.getQueryData('todos')
不会总是触发数据的获取。你可以自定义 useQuery
来告诉 react-query 一个资源被认为是新鲜的,只要它是新鲜的,数据就只会来自内部缓存。如果您设置 staleTime
,则只会进行一次提取,所有其他调用都只会从缓存中读取(手动失效和垃圾收集除外)。
最好将 useQuery 调用提取到自定义挂钩:
staleTime: Infinity
const useTodos = () => useQuery('todos', fetchFunction)
HomeComponent:
const { data } = useTodos()