data 가져오기 (fetch, useState)
import useSWR from "swr";
function Profile() {
const { data, error, isLoading } = useSWR("/api/user", fetcher, options);
if (error) return <div>failed to load</div>;
if (!data) return <div>loading...</div>;
return <div>data is {data}</div>;
}
fetcher는 데이터를 반환하는 어떠한 비동기 함수도 될 수 있다. 네이티브 fetch 또는 Axios와 같은 도구를 사용할 수 있다.
const fetcher = (...args) => fetch(...args).then(res => res.json());
const axios1 = (url: string) => Axios.get(url).then((res) => res.data)
const fetcher = async url => {
const res = await fetch(url)
if (!res.ok) {
const error = new Error("fail fetch data");
error.info = await res.json();
error.status = res.status
throw error
}
return res.json();
}