
๋ก๊ทธ์ธ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ จ ์ ์ญ ์ํ๊ด๋ฆฌ ๊ธฐ์ ๋ก Recoil์ ์ฑํํ๊ณ ์๋ค.
Recoil
๋ฆฌ์ฝ์ผ(Recoil) ์ API, ์๋ฏธ, ๋์์ ์ต๋ํ ๋ฆฌ์กํธ์ค๋ฝ๊ฒ ์ ์งํ๋ฉฐ ์ด๋ฅผ ๊ฐ์ ํ๊ณ ์ ํ์ด์ค๋ถ์์ ๋ง๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Recoil ํต์ฌ๊ฐ๋
- Atom : ํ๋์ ์์ ์ํ. ์ผ๋ฐ์ ์ธ ๋ฆฌ์กํธ์ ์ํ๋ก ์ปดํฌ๋ํธ๋ค ๊ตฌ๋ ์ด ๊ฐ๋ฅ
- useRecoilState : atom ๊ฐ์ ์ฝ๊ณ update ํ๋ hook. React Hook์ UseState ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ.
ํด๋์คํ ์ปดํฌ๋ํธ์ ์ํ๊ด๋ฆฌ์์ State์ SetState๋ฅผ ํฉ์น ๊ฒ๊ณผ ๊ฐ์. - useRecoilValue : setter์ ์ ์ธํ atom์ ๊ฐ๋ง ์ ๊ณต. ํด๋์คํ ์ปดํฌ๋ํธ์ ์ํ๊ด๋ฆฌ์์ state์ ์ญํ
- useSetRecoilState : setter๋ง ์ ๊ณต. ํด๋์คํ ์ปดํฌ๋ํธ์ ์ํ๊ด๋ฆฌ์์ setState์ ์ญํ
- Selector : ๋ค๋ฅธ atom๋ค ํน์ selector๋ค์ ๋ฐ์ ์ฌ์ฉํ๋ ์์ ํจ์. atom์ ์ํ์ ์์กดํ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํ์. ๋ฐ์ atom๋ค ํน์ selector๋ค ์ค ์ด๋ค ๊ฒ์ด ์ ๋ฐ์ดํธ๋๋ฉด, selector ํจ์๋ ๋ค์ ํ๊ฐ๋๊ณ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋จ.
๋ฌธ์ ์ํฉ
Recoil ๋ก ์ง์ ํ ์ด๋ค atom ์ ๊ฐ์ ์ง์ด ๋ฃ์ด ๋๋ค๊ฐ ์ฐ๋๋ฐ..
์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ฑ ์ ์๋ก๊ณ ์นจ ํ๊ฑฐ๋ ํ์ด์ง๋ฅผ ๋ซ์ ๋ ์ ์ฅ์์ ์ ์ฅ๋ ์ํ๊ฐ ์ญ์ ๋๋ค..
ํ์ง๋ง ๋๋ ์๋ก๊ณ ์นจ ํ๊ฑฐ๋ ํ์ด์ง๋ฅผ ๋ซ์๋ค๊ฐ ์ด๋๋ผ๋ ๋ณ์ ๊ฐ์ด ๊ทธ๋๋ก ์์ด์ผ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค.
Recoil-persist ?
์ค์น
> npm install recoil-persist
์ฌ์ฉ๋ฒ
import { atom } from "recoil";
import { recoilPersist } from "recoil-persist";
const { persistAtom } = recoilPersist()
const isLogin = atom({
key: "isLogin",
default: undefined,
effects_UNSTABLE: [persistAtom]
});
export { isLogin };
recoil-persist ์ค์นํ๊ณ → ์ ์ธํด์ฃผ๊ณ → effects_UNSTABLE ๋ก ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํด์ฃผ๋ฉด ์๋ก๊ณ ์นจํด๋ ๊ฐ์ด ์ ์ง๋๋ค.