>[danger]手写实现uesQuery 使用 React 的 `useState` 和 `useEffect` 钩子来实现这个自定义的 `useQuery`。 ```javascript import { useState, useEffect } from 'react'; const useQuery = (queryFunction) => { const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { setIsLoading(true); try { const result = await queryFunction(); setData(result); } catch (error) { setError(error); } finally { setIsLoading(false); } }; fetchData(); }, [queryFunction]); return { data, isLoading, error }; }; export default useQuery; ``` 在上面的示例中,定义了一个名为 `useQuery` 的自定义钩子。 它接受一个名为 `queryFunction` 的参数,该参数是一个异步函数,用于执行实际的数据获取操作。 在钩子内部,我们使用 `useState` 来定义 `data`、`isLoading` 和 `error` 这三个状态,并使用 `useEffect` 来执行数据获取的逻辑。 当组件使用 `useQuery` 钩子时,它将返回 `data`、`isLoading` 和 `error` 这三个状态,从而可以在组件中访问到数据获取的结果、加载状态和错误信息。