React Hooks 是 React 16.8 版本引入的一个新特性,它允许你在不编写 class 组件的情况下使用 state 和其他 React 特性。Hooks 提供了一种在函数组件中使用 state 和生命周期方法的方式。
React Query (useQuery) 是一个用于数据获取和管理的库,它与 React Hooks 结合使用,可以轻松地从 API 获取数据并在组件中使用。useQuery
是 React Query 提供的一个 Hook,用于在组件中执行查询。
useState
:用于管理组件的 state。useEffect
:用于处理副作用,如数据获取和订阅。useContext
:用于访问 React 的 Context API。useQuery
:用于执行查询并获取数据。useMutation
:用于执行数据修改操作,如 POST、PUT、DELETE 等。以下是一个使用 useQuery
在单击按钮时调用 API 的示例:
import React from 'react';
import { useQuery } from 'react-query';
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
};
const MyComponent = () => {
const { data, isLoading, error } = useQuery('myData', fetchData, {
enabled: false, // 默认不执行查询
});
const handleClick = () => {
// 在单击按钮时启用查询
queryClient.setQueryData('myData', null);
};
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error: {error.message}</div>;
return (
<div>
<button onClick={handleClick}>Fetch Data</button>
<div>{JSON.stringify(data)}</div>
</div>
);
};
export default MyComponent;
问题:为什么在单击按钮时没有调用 API?
原因:
useQuery
的 enabled
选项默认设置为 false
,因此查询不会自动执行。解决方法:
useQuery
中设置 enabled: false
,以便默认不执行查询。queryClient.setQueryData('myData', null)
手动启用查询。希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云