使用 TanStack Query 进行可扩展的 React 应用程序

主要观点:在构建 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 可构建可靠可维护系统。
阅读 205
0 条评论