数据获取

TanStack Query / SWR

推荐

TanStack Query

用的人多,能做的事也多。不仅是显示数据,保存和删除也能用同样的思路来写

比较效果

用每个库做了同样的东西,动手试试看。

TanStack Query
SWR

比较代码

修改代码,右边的预览会跟着变化。

import {
  QueryClient,
  QueryClientProvider,
  useQuery,
} from "@tanstack/react-query"
import { fetchEmployees } from "./api"
import { EmployeeListView, ErrorView, LoadingView } from "./view"

// 缓存已获取数据的容器(整个应用一个)
const queryClient = new QueryClient()

function EmployeeList() {
  const { data, isPending, error } = useQuery({
    queryKey: ["employees"],
    queryFn: fetchEmployees,
  })

  if (isPending) return <LoadingView />
  if (error) return <ErrorView message={error.message} />

  return <EmployeeListView employees={data} />
}

export default function App() {
  return (
    // 用 QueryClientProvider 包住整个应用,里面就能使用 useQuery
    <QueryClientProvider client={queryClient}>
      <EmployeeList />
    </QueryClientProvider>
  )
}

比较

截至 2026 年 10 月

TanStack Query

推荐官方网站 ↗

特点

获取数据、缓存数据、数据过期后重新获取,一并帮你搞定。保存、删除(修改数据的操作)的功能也很完善

适用场景

推荐。管理后台等需要大量显示和更新数据的应用

特点

由开发 Next.js 的 Vercel 推出的库。一行 useSWR 就能获取数据。小巧简单

适用场景

用 Next.js 开发。只需要显示数据的简单页面