基本使用
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 并不关心。
以下是一个使用原生 fetch 的 fetcher 函数示例,这个 fetcher 函数可以直接被应用于任意 useSWR Hook 中。
const fetcher = (...args) => fetch(...args).then(res => res.json());
通常一个请求会有3种可能的状态:loading 、 ready 、error 。在使用 SWR 时,可以使用 data 和 error 的值来确定当前的请求状态。