์ฅ์ : ์บ์ ๊ด๋ฆฌ ์์คํ
์ ๋์ด ์์
(fetch ์์ฒญ api ์๋ํฌ์ธํธ๋ณ๋ก ์ต์ ํํด์ค)
๊ธฐ์กด ๋ฐฉ์
useEffect์์ api call -> ๋ฐ์์จ ์ ๋ณด๋ฅผ state์ ๋ฃ์ด์(setData) -> ์ปดํฌ๋ํธ์ ๋ฟ๋ ค์ค๋ค
๐๐๐ data ๋ฐ์์ค๋ ๋์ ํ๋ฉด์ data๋ฅผ ๊ทธ๋ ค์ฃผ์ง ๋ชป ํจ ยทยทยทยท
๊ธฐ๋ณธ ๋ณํํ์ ๋
(fetcher์ url ํ๋ผ๋ฏธํฐ๋ '/api/'๊ฐ ๋ค์ด๊ฐ๊ฒ ๋จ.)
UX ๊ฐ์ ํด๋ณด๊ธฐ
useSwr์ mutate
ํจ์ : ์บ์ ์
๋ฐ์ดํธ์์ ์ฌ์ฉ
์๋ต ์ค๊ธฐ ์ ์ ๋จผ์ ํ๋ฉด ๋ณด์ฌ์ฃผ๊ธฐ
==> post ์์ฒญํ๊ณ payload๋ก ์ผ๋จ ํ๋ฉด์ ๋จผ์ ๋ณด์ฌ์ฃผ๊ณ
-> response์ค๋ฉด ํด๋น ๊ฐ์ผ๋ก ๋ค์ painting!
๊ฐ์ api endpoint ๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์(ํ ํ๋ฉด์์) ํธ์ถํ ๊ฒฝ์ฐ 1๋ฒ๋ง callํ์ฌ ์ต์ ํ
==> useSwr๋ก ๋์ผํ endpoint์ api ์ฌ๋ฌ ๋ฒ ํธ์ถ
-> 1๋ฒ๋ง ํธ์ถํ์ฌ ํด๋น ๊ฐ์ผ๋ก ์บ์ฑํด์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉ
โก๏ธ ๋ฆฌ์์ค ์ฌ์ฉ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฅ!
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 ๋ค์ ์์ฒญ ===> ์๊ฐ์ ์ฒญ ํ์ด์ง์ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๊ฒ ๋ค.