默认的查询函数 Default Query Fn
如果出于某种原因,你希望在整个应用中共享相同的查询功能,并且可以仅靠查询键值来标识应获取的内容。 则可以通过重写 TanStack Query 提供的默认查询函数来做到这一点:
TypeScript
1// 定义一个参数为查询键值的默认查询函数2const defaultQueryFn = async ({ queryKey }) => {3 const { data } = await axios.get(4 `https://jsonplaceholder.typicode.com${queryKey[0]}`5 );6 return data;7};8 9// 使用 defaultOptions 向你的应用提供默认查询函数10const queryClient = new QueryClient({11 defaultOptions: {12 queries: {13 queryFn: defaultQueryFn,14 },15 },16});17 18function App() {19 return (20 <QueryClientProvider client={queryClient}>21 <YourApp />22 </QueryClientProvider>23 );24}25 26// 现在,只需要传入一个键值就行了!27function Posts() {28 const { status, data, error, isFetching } = useQuery({29 queryKey: ["/posts"],30 });31 32 // ...33}34 35// 你也可以传入一些参数36function Post({ postId }) {37 const { status, data, error, isFetching } = useQuery({38 queryKey: [`/posts/${postId}`],39 enabled: !!postId,40 });41 42 // ...43}如果你想覆盖默认的 queryFn,像平常一样提供一个函数即可。