我意识到:如果我想使用钩子import { useQuery } from 'react-query',我只能在React函数组件中这样做。我是否必须用React函数语法重写旧的类组件,或者是否有一种简单的方法可以将react-query与类语法一起使用?我确信它在某个地方有文档记录,但我只能找到使用React函数组件的教程。
import { useQuery } from 'react-query'
o75abkj41#
使用render props模式重新实现它非常容易。从github discussion:
function UseQuery (props) { return props.children(useQuery(props.key, props.fn, props.options)) } <UseQuery key=“todos” fn={() => getTodos()} options={{ staleTime: 5000 }} > {query => {. . .}} </UseQuery>
6ie5vjzr2#
正式挂钩(一般情况下)只能在功能性React组件内部使用。See FAQs您可以:
9cbw7uwe3#
作为TkDodo答案的延伸:如果您想知道如何使用 typescript 正确键入此HOC:
import { useQuery, QueryKey, QueryFunction, UseQueryOptions, UseQueryResult } from 'react-query'; type Props< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey > = { queryKey: TQueryKey; queryFn: QueryFunction<TQueryFnData, TQueryKey>; options?: Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'queryFn'>; children: (params: UseQueryResult<TData, TError>) => JSX.Element; }; /** * Utility component for using React-Query in class components */ export const UseQuery = < TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey >( props: Props<TQueryFnData, TError, TData, TQueryKey> ) => { const query = useQuery(props.queryKey, props.queryFn, props.options); return props.children(query); };
3条答案
按热度按时间o75abkj41#
使用render props模式重新实现它非常容易。从github discussion:
6ie5vjzr2#
正式挂钩(一般情况下)只能在功能性React组件内部使用。See FAQs
您可以:
9cbw7uwe3#
作为TkDodo答案的延伸:如果您想知道如何使用 typescript 正确键入此HOC: