2023.07.03 - [Front-End/Library] - Library] SWR
์ ๋ฒ ๊ฒ์๊ธ์ ์ด์ด์ SWR ์ฌ๋ฌ ๊ฐ๋ ? ๊ธฐ๋ฅ? ๋ค์ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
์ ์ญ์ค์
๋ง์ฝ SWR์ ์ฌ์ฉํ๋๋ฐ fetcher๊ฐ ์ค๋ณต๋๋ค๋ฉด ๊ณ ๋ คํด์ ์ฌ์ฉํ๋ฉด ์ข์ ๋ฏํ ๊ธฐ๋ฅ์ ๋๋ค.
import useSWR, { SWRConfig } from 'swr'
function Dashboard () {
const { data: events } = useSWR('/api/events')
const { data: projects } = useSWR('/api/projects')
const { data: user } = useSWR('/api/user', { refreshInterval: 0 }) // ์ค๋ฒ๋ผ์ด๋
// ...
}
function App () {
return (
<SWRConfig
value={{
refreshInterval: 3000,
fetcher: (resource, init) => fetch(resource, init).then(res => res.json())
}}
>
<Dashboard />
</SWRConfig>
)
}
๊ณต์ ํํ์ด์ง์ ์๋ ์์ ์์ค์ ๋๋ค.
Appํจ์์์ fetcher๊ฐ ๊ฒน์น๊ธฐ ๋๋ฌธ์ ์ ์ญ์ผ๋ก <SWRConfig>๋ฅผ ์ถ๊ฐํ์๊ณ ,
๊ธฐ๋ณธ์ต์ ์ผ๋ก refreshInterval์ 3์ด ์ฃผ์์ง๋ง, user ๊ฐ์ ๊ฒฝ์ฐ๋ 0์ผ๋ก ๋ฎ์ด์์์ค ์ํฉ์ ๋๋ค.
์ค๋ณต์ผ๋ก ์ฌ๋ฌ ๊ฐ์ <SWRConfig>๋ ๊ฐ๋ฅํด ๋ณด์ ๋๋ค.
๋ค์ค ์ธ์ ์ ๋ฌ
๋ณดํต ํ ํฐ๊ฐ์ ์ฌ์ฉํ๋๋ฐ, ๋ค๋ฅธ ํ ํฐ๊ฐ์ ์ ๋ฌํด์ผ ๋ ๋? ์ฌ์ฉ๋ ๋ฏ์ถ์ต๋๋ค.
const { data: user } = useSWR(['/api/user', token], ([url, token]) => fetchWithToken(url, token))
์ธ์ ๊ฐ์๋ url๊ณผ fetcher๋ก ๋์ผํ์ฌ, ์ฒซ ๋ฒ์งธ ์ธ์์ธ url์ ๋๊ธธ ๋, ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ํ๋ฒ์ ๋๊ฒจ์ ์ ์ฉ์์ผ ์ค๋๋ค.
๊ฐ์ฒด๋ก ์ ๋ฌํด๋ ๊ฐ๋ฅํฉ๋๋ค.
๋ด์ฉ์ด ๋ง์์ ์ข๋ ์ธ๋ถํํด์ ๊ธ์ ์์ฑํด์ผ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ถ๊ฐ๋ก ์ ๋ฐ์ดํธ ๋ ์๋ ์๊ณ , ์๋ ์ ๋ ์์ต๋๋ค.
mutate๋ pagination์ ๋ฐ๋ก ์์ฑํ ์์ ์ ๋๋ค.
'Front-End > Library' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Library] SWR : ์์ฉ_Pagination & InfiniteScroll(useSWRInfinite) (0) | 2023.07.04 |
---|---|
Library] SWR : ์์ฉ_Mutate & Revalidation (0) | 2023.07.03 |
Library] SWR (0) | 2023.07.03 |
Library] Swiper (0) | 2023.06.29 |
Library] Axios : ์์ฉ (0) | 2023.06.28 |