Front-End/Library

Library] SWR : ์‘์šฉ

์™•๊ฐ€๐Ÿ‘ 2023. 7. 3. 15:37
728x90
๋ฐ˜์‘ํ˜•
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์€ ๋”ฐ๋กœ ์ž‘์„ฑํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
728x90

'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