[TIL] SWR, Redux Tips ๐Ÿคฏ

banginaยท2021๋…„ 5์›” 2์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
15/17
post-thumbnail

์ฝ์€ ๋ฌธ์„œ๋“ค

Image Optimization

Redux

SWR (Data fetching)


SWR

์žฅ์  : ์บ์‹œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ž˜ ๋˜์–ด ์žˆ์Œ
(fetch ์š”์ฒญ api ์—”๋“œํฌ์ธํŠธ๋ณ„๋กœ ์ตœ์ ํ™”ํ•ด์คŒ)

๊ธฐ์กด ๋ฐฉ์‹

useEffect์—์„œ api call -> ๋ฐ›์•„์˜จ ์ •๋ณด๋ฅผ state์— ๋„ฃ์–ด์„œ(setData) -> ์ปดํฌ๋„ŒํŠธ์— ๋ฟŒ๋ ค์ค€๋‹ค

๐Ÿ‘‰๐Ÿ‘‰๐Ÿ‘‰ data ๋ฐ›์•„์˜ค๋Š” ๋™์•ˆ ํ™”๋ฉด์— data๋ฅผ ๊ทธ๋ ค์ฃผ์ง€ ๋ชป ํ•จ ยทยทยทยท

useSwr

  1. ๊ธฐ๋ณธ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ

    (fetcher์˜ url ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” '/api/'๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ.)
  1. UX ๊ฐœ์„ ํ•ด๋ณด๊ธฐ

    useSwr์˜ mutate ํ•จ์ˆ˜ : ์บ์‹œ ์—…๋ฐ์ดํŠธ์‹œ์— ์‚ฌ์šฉ

  • ์‘๋‹ต ์˜ค๊ธฐ ์ „์— ๋จผ์ € ํ™”๋ฉด ๋ณด์—ฌ์ฃผ๊ธฐ
    ==> post ์š”์ฒญํ•˜๊ณ  payload๋กœ ์ผ๋‹จ ํ™”๋ฉด์— ๋จผ์ € ๋ณด์—ฌ์ฃผ๊ณ 
    -> response์˜ค๋ฉด ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๋‹ค์‹œ painting!

  • ๊ฐ™์€ api endpoint ๋ฅผ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ(ํ•œ ํ™”๋ฉด์—์„œ) ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ 1๋ฒˆ๋งŒ callํ•˜์—ฌ ์ตœ์ ํ™”
    ==> useSwr๋กœ ๋™์ผํ•œ endpoint์˜ api ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ
    -> 1๋ฒˆ๋งŒ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ์บ์‹ฑํ•ด์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ์‚ฌ์šฉ

โžก๏ธ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€๋Šฅ!

์ถ”๊ฐ€ Options

revalidate on focus
๊ฐ™์€ ํ™”๋ฉด ๋‘ ํƒญ/์ฐฝ์—์„œ ์ผœ๋†“์•˜์„ ๊ฒฝ์šฐ

-> if, A ํ™”๋ฉด์—์„œ๋งŒ ๋ฐ์ดํ„ฐ update ๋ฐœ์ƒ(ex. ํˆฌ๋‘๋ฆฌ์ŠคํŠธ 1๊ฐœ ์ถ”๊ฐ€)
-> Bํ™”๋ฉด์€ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ์ƒํƒœ
-> Bํ™”๋ฉด์— onFocus์‹œ์— ์ž๋™์œผ๋กœ update๋œ data๋ฅผ ๊ทธ๋ ค์คŒ! ๐Ÿคฏ
(Behind the scene: B์— onFocus ์‹œ์— ํ•ด๋‹น api๋ฅผ GET์š”์ฒญํ•ด์„œ revalidate)

refresh interval
: ํด๋ง ๊ธฐ๋Šฅ
์„ธํŒ…ํ•œ interval ์‹œ๊ฐ„๋งˆ๋‹ค ํ•ด๋‹น api ๋‹ค์‹œ ์š”์ฒญ ===> ์ˆ˜๊ฐ•์‹ ์ฒญ ํŽ˜์ด์ง€์— ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜๊ฒ ๋‹ค.

profile
โœ๏ธ ๊ธฐ๋กํ•˜๋Š” ์Šต๊ด€์œผ๋กœ ์„ฑ์žฅํ•˜๋Š” ์›น ๊ฐœ๋ฐœ์ž. ์ด๋ชจ์ง€ Lover ๐Ÿ’˜

0๊ฐœ์˜ ๋Œ“๊ธ€