基本使用

SWR 是基于 React Hook 的,所以在使用的时候也就是一句话搞定。

import useSWR from 'swr';

function Order({ orderId }) {
  const { data, error } = useSWR(`/api/order/${orderId}`, fetcher);

  if (error) return <div>加载错误!</div>;
  if (!data) return <div>加载中...</div>;

  return <div>{data.customer}</div>;
}

从上面这个示例可以看出,SWR 的核心就是 useSWR 这个 Hook,而获取数据的核心函数则是示例中出现的 fetcher 。这个 fetcher 实际上是十分简单的,只需要返回一个 Promise 实例就可以了,对于 fetcher 如何从服务端获取数据,SWR 并不关心。

以下是一个使用原生 fetchfetcher 函数示例,这个 fetcher 函数可以直接被应用于任意 useSWR Hook 中。

const fetcher = (...args) => fetch(...args).then(res => res.json());

通常一个请求会有3种可能的状态:loadingreadyerror 。在使用 SWR 时,可以使用 dataerror 的值来确定当前的请求状态。