加载中...
发生错误: {{ error.message }}
```
## 📚 核心 API
### useQuery - 数据获取
用于获取数据的基础 hook:
```typescript
const {
data, // 查询结果
isLoading, // 首次加载状态
isFetching, // 获取状态(包括后台刷新)
error, // 错误信息
refetch, // 手动重新获取
remove // 移除查询缓存
} = useQuery({
queryKey: ['queryKey'],
queryFn: fetchFunction,
enabled: true, // 是否启用查询
staleTime: 30000, // 数据过期时间(30秒)
gcTime: 300000 // 缓存垃圾回收时间(5分钟)
})
```
### useMutation - 数据修改
用于创建、更新、删除操作:
```typescript
const {
mutate, // 执行变更
mutateAsync, // 异步执行变更
isLoading, // 变更加载状态
error, // 变更错误
isSuccess // 变更成功状态
} = useMutation({
mutationFn: (data) => apiService.createUser(data),
onSuccess: (data) => {
// 成功回调
queryClient.invalidateQueries(['users'])
},
onError: (error) => {
// 重要: ElMessage 已经在httpClient 封装过了,如果不需要对异常进行特殊处理,你完全不需要 onError
}
})
```
### useQueryClient - 查询客户端
用于手动管理缓存:
```typescript
import { useQueryClient } from '@tanstack/vue-query'
const queryClient = useQueryClient()
// 手动设置查询数据
queryClient.setQueryData(['user', userId], userData)
// 使特定查询失效
queryClient.invalidateQueries({ queryKey: ['users'] })
// 移除查询
queryClient.removeQueries(['user', userId])
// 获取查询数据
const userData = queryClient.getQueryData(['user', userId])
```
## 🎯 实际应用场景
### 1. 列表页面数据获取
列表不需要使用这个,使用封装好的 useTable 即可
### 2. 详情页面数据获取
```vue