主要观点:在构建 React 应用时,数据获取常始于原生 fetch API 或 Axios 等工具,大型应用需更多特性,TanStack Query 在此方面表现出色,它提供了用于 CRUD 操作的经过验证的抽象和强大的状态管理。文章介绍了用 useQuery 抓取数据(GET)和用 useMutation 执行突变,还提及了 TanStack Query 的一些特性如重试逻辑、条件获取、缓存、请求取消、后台重新获取等,最后得出 TanStack Query 对处理复杂应用有帮助的结论。
关键信息:
- TanStack Query 适用于大型应用,提供多种特性。
- useQuery 用于 GET API 调用,包含 queryKey、queryFn、retry 等配置。
- useMutation 用于 POST/PUT/DELETE API 调用,有 mutationFn 和 onSuccess 回调。
- TanStack Query 可消除样板代码,提高开发效率。
- 需在组件树中用 QueryClientProvider 包裹才能使用 useQuery 和 useMutation。
重要细节:
fetchMovies函数获取 '/v1/api/movies' 的数据,成功则返回 JSON,失败抛出错误。useFetchMoviesList用 useQuery 包裹fetchMovies,提供内置状态。addMovie函数发送 POST 请求添加电影,成功返回 JSON,失败抛出错误。useAddMovie用 useMutation 包裹addMovie,成功后调用invalidateQueries刷新缓存。- TanStack Query 的特性包括重试逻辑(如 retry: 3)、条件获取(设 enabled 为 false 等待满足条件)、缓存(首次获取后缓存数据)、请求取消(组件卸载或用户导航离开时取消查询)、后台重新获取(用户重新聚焦浏览器或重新连接网络时自动更新数据)。
- 小型应用用 plain fetch 即可,大型应用采用 TanStack Query 可构建可靠可维护系统。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。