Recoil Basic
Last updated
Last updated
recoil ๊ด๋ จ reference
๋ชฐ์ ์ฝ๋ฉ ์์นด์ด๋ธ - recoil
์ฝ์ผ์๋น
react-query
๋ ์๋ฒ ์ํ๋ฅผ ๋ค๋ฃจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
redux
, mobx
๋ฑ์ ํด๋ผ์ด์ธํธ ์ํ๋ฅผ ๋ค๋ฃจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
recoil ์ฐธ๊ณ ๊ธ -
- atomFamily(), selectorFamily()
- recoil tutorial
- recoil ๋น๋๊ธฐ ์ฒ๋ฆฌ
selectorFamily - ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋๊ธธ๋
useRecoilState()
์ญํ ์ ๋ฐ์ผ๋ก ์ชผ๊ฐ๋ฉด
useRecoilValue()
value๋ง ํ์ํ ์ปดํฌ๋ํธ
useSetRecoilState()
state๋ฅผ ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ ์ปดํฌ๋ํธ
useResetRecoilState()
์ธ์๋ก ๋ฐ์์จ atom์ state๋ฅผ default ๊ฐ์ผ๋ก reset ์ํค๋ ์ญํ
selector๊ฐ atom์ ๊ตฌ๋ ํ๊ณ ์๋ค๊ฐ ์ด๋ฏธ ์ ์ธ๋ atom์ด ๊ฐ์ด ๋ณํ ๋, ๋ค์ ์คํ๋จ(atom ๊ตฌ๋ ๊ธฐ๋ฅ)
์๋ฒ์ ํต์ ํ๋ ๋น๋๊ธฐ ๊ฐ(response.data)์ ์์ ์ ๊ฐ์ผ๋ก ๊ฐ์ง ์ ์์
selector๋ read-only ํ RecoilValueReadOnly
๊ฐ์ฒด๋ก์ return ๊ฐ ๋ง์ ๊ฐ์ง ์ ์๊ณ ๊ฐ์ set
ํ ์ ์๋ ํน์ง
state.js
key: selector๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ์ ์ผํ id
, ์ฆ key ๊ฐ์ ์๋ฏธ
get: ์๋ derived state
๋ฅผ return ํ๋ ๊ณณ. ์์ ์ฝ๋์์๋ api call์ ํตํด ๋ฐ์์จ data๋ฅผ return,
๊ตฌ๋ ํ๊ณ ์๋ atom์ ๊ฐ์ด setState์ ์ํด ์์ ๋์ ๋, get์ ํ ๋น๋ ํจ์๊ฐ ์ฌ์คํ๋จ.
const cookie = useRecoilValue(selector)
์ด๋ ๊ฒ ์กฐํ ๊ฐ๋ฅ
set: writeable ํ state ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ํจ์๋ฅผ return ํ๋ ๊ณณ
selector๋ read-only ํ return ๊ฐ(RecoilValue
)๋ง ๊ฐ์ง๊ธฐ ๋๋ฌธ์ set์ผ๋ก๋ writeableํ atom ์ RecoilState
๋ง ์ค์ ๊ฐ๋ฅ
Loadable ๊ฐ์ฒด
const cookieLoadable = useRecoilValueLoadable(getcookieSelector);
state : hasValue
, hasError
, loading
atom ์ด๋ selector์ ์ํ๋ฅผ ๋งํ๋ฉฐ, ์์ ์ธ ๊ฐ์ง ์ํ
contents: atom์ด๋ contents์ ๊ฐ์ ๋ํ๋ด๋ฉฐ, ์ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ ๋ณด์ .
hasValue
์ํ์ผ ๋ value
hasError
์ผ ๋ Error
๊ฐ์ฒด
loading
์ผ ๋ Promise
๊ธฐ์กด์ atom์ ์ด์ฉํ ๋ฐฉ์์ ๋งค๋ฒ api call์ ํ๊ณ ์๋ ๋ฐ๋ฉด, selector๋ก ๋ฐ๊ฟ์ ๊ตฌํํ์ ๋, ํ๋ฒ call์ ํ๋ api์ ๋ํ ์บ์ฑ์ด ์ด๋ฃจ์ด์ ธ ๋ค์ ํธ์ถํ์ง ์์
์บ์(cache)๋ ์ปดํจํฐ ๊ณผํ์์ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ ์์ ์ฅ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์บ์๋ ์บ์์ ์ ๊ทผ ์๊ฐ์ ๋นํด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ๊ฐ์ ๋ค์ ๊ณ์ฐํ๋ ์๊ฐ์ ์ ์ฝํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. ์บ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋์ผ๋ฉด ๊ณ์ฐ์ด๋ ์ ๊ทผ ์๊ฐ ์์ด ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค
atomFamily
์ด Family ๋ฉ์๋๋ค์ atom(ํน์ selector)์ ๋ฆฌํดํ๋ ํฉํ ๋ฆฌ ํจ์์ด๋ค. ์ธ์(params)๋ฅผ ๋ฐ์, ์ด๋ฅผ ๋ฐ์ํ ๋์ ์ธ ์ํ๊ฐ์ ๋ฐํํ๋ค.
๊ทธ๋ ๊ธฐ์, Recoil ๋ด ๋ค๋ฅธ ์ํ๊ฐ์ด ์๋, ์ธ๋ถ์ธ์(Query Params ๋ฑ)๋ฅผ ํ์ฉํ ์ํ๊ฐ์ ๊ด๋ฆฌํ๊ธฐ์ ์ ๋ฆฌํ๋ค.
selectorFamily
ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ํ ๋น๋๊ธฐ ๋ฐ์ดํฐ : selectorFamily()
selector
์ selectorFamily
๋ ๋ฐฉ์์ ์ฐจ์ด๋ ํ๋ผ๋ฏธํฐ์ ์ ๋ฌด
๊ตณ์ด ์ํ์ ์ ์ฅํ ํ์๊ฐ ์๋ ๊ฐ์ด๋ผ๋ฉด selectorFamily
๋ฅผ ์ฌ์ฉ
- recoil ๋์์ ์ค๋ช
- recoil ๋์์ ์ค๋ช