
๋ฐ์ดํฐ์ ๋ํ ์บ์ฑ๊ณผ ์ฌ๊ฒ์ฆ์ ํ๋ ๊ฒ
๋ฐ์ดํฐ ๋ก๋์ดํ, cash๋ฅผ ๊ฐ์ ธ ๊ตฌ๋์ดํ ๋ฉ๋ชจ๋ฆฌ ์์ cash๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ์
const fetcher = (...args) => fetch(...args).then(res => res.json()):๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๋ฐฉ์๊ณผ ์๊ด์์ด ๋ชจ๋ fetcher๋ก ๋ง๋ค ์ ์์const fetcher = function (url, params) { fetch(params).then(res => res.data) //window fetch axios.get(url, (config = {params})).then(res => res.data); //axios์ฌ์ฉ, response์ data return };
import useSWR from 'swr' function Profile () { const { data, error, isLoading } = useSWR('/api/user/123', fetcher) if (error) return <div>failed to load</div> //error๊ฐ ๋๋ฉด error ์ถ๋ ฅ if (isLoading) return <div>loading...</div> //data๊ฐ ์๋ค๋ฉด, // ๋ฐ์ดํฐ ๋ ๋๋ง return <div>hello {data.name}!</div> }๐ BoxOffice.js
const url = 'https://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json'; const {data, error} = useFetch( url, (params = { key: 'bb4881b8d562d9187648f76284e6f14c', targetDt: '20220222', }), ); if (error) return <Paragraph>{JSON.stringify(error)}</Paragraph>; if (!data) return <ActivityIndicator />; const ranks = data?.boxOfficeResult?.dailyBoxOfficeList || [] return~๐ MovieDetail.js
const url = 'https://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.json'; const {data, error} = useFetch( url, (params = { key: 'bb4881b8d562d9187648f76284e6f14c', movieCd: route.params.movieCd, }), ); if (error) return <Paragraph>{JSON.stringify(error)}</Paragraph>; if (!data) return <ActivityIndicator />; const detail = data.movieInfoResult.movieInfo; return~
์ฌ์ฉ์๋ค์ด ๋ง์ด ํด๋ฆญํ ๊ฒ์ผ๋ก ๋ณด์ฅ๋๋ ๋ถ๋ถ์๊ฒ ํ๋ฆฌํจ์นญํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ถ์ฌ
mutatefetchํด์ ๊ฐ์ง๊ณ ์ค๋ data๋ฅผ ์ด๋ฅผ ํตํด ๋ค์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ ๊ฒ
ํธ์ถํ๋ ์์ ์ ๋ฐ์ดํฐ ํ๋ฆฌํจ์นญ์ ์์
์น: ๋ง์ฐ์ค๊ฐ ์ค๋ฒ๋๋ ์๊ฐ, ์๋๊ฒ์: ์์ธก ๊ฐ๋ฅํ ๋ฒ์๐ BoxOffice.js
useEffect(() => { if (!data) return; const ranks = data?.boxOfficeResult?.dailyBoxOfficeList || []; (async function () { for (const rank of ranks) { await prefetch( //await: ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ 'https://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.json', { key: 'bb4881b8d562d9187648f76284e6f14c', movieCd: rank.movieCd, }, ); } })(); }, [data]);๊ฐ ํ์ด์ง์ rank๋ค์
๋น๋๊ธฐ์ฒ๋ฆฌ๋ก์์ฐจ์ ์ผ๋กfor๋ฌธ์ ์ด์ฉํด ํ๋ฆฌํจ์นญ