能否将queryFn传入useQuery?上下文获取queryFn的使用疑问
关于useQuery传入queryFn的问题
完全可以给useQuery传入自定义的queryFn,你的思路是成立的,哪怕是你示例里的useDynamicQuery(如果它是基于TanStack Query封装的自定义Hook),这种写法也能正常工作。
需要注意两个细节:
- 保证
fetch的稳定性:你用React.useCallback并把fetch作为依赖项,只要useAppFetch返回的fetch是稳定的(比如内部用useCallback做了包裹),就不会触发不必要的重渲染。 queryFn的参数传递:TanStack Query的queryFn默认会接收包含queryKey等属性的对象,如果你需要传递自定义参数,要么确保args能正确传入fetch,要么从queryKey里解构参数(这也是TanStack Query推荐的参数传递方式)。
标准useQuery的写法示例:
const fetch = useAppFetch() const { data } = useQuery({ queryKey: ['custom-query', args], queryFn: React.useCallback(() => fetch(args), [fetch, args]) })
你给出的useDynamicQuery示例写法没有问题,只要这个自定义Hook内部正确处理了传入的queryFn配置,就能正常执行请求逻辑。
内容的提问来源于stack exchange,提问作者Mxcpanel
相关产品推荐
相关产品推荐

