header-img
Info :
728x90

Recoil ๋„์ž… ์—ญ์‚ฌ์˜ ์‹œ์ž‘

๋กœ๊ทธ์ธ ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ „์—ญ ์ƒํƒœ๊ด€๋ฆฌ ๊ธฐ์ˆ ๋กœ Recoil์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.

Recoil

๋ฆฌ์ฝ”์ผ(Recoil) ์€ API, ์˜๋ฏธ, ๋™์ž‘์„ ์ตœ๋Œ€ํ•œ ๋ฆฌ์•กํŠธ์Šค๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•˜๋ฉฐ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Recoil ํ•ต์‹ฌ๊ฐœ๋…

  1. Atom : ํ•˜๋‚˜์˜ ์ž‘์€ ์ƒํƒœ. ์ผ๋ฐ˜์ ์ธ ๋ฆฌ์•กํŠธ์˜ ์ƒํƒœ๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค ๊ตฌ๋…์ด ๊ฐ€๋Šฅ
  2. useRecoilState : atom ๊ฐ’์„ ์ฝ๊ณ  update ํ•˜๋Š” hook. React Hook์˜ UseState ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ.
    ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ด€๋ฆฌ์—์„œ State์™€ SetState๋ฅผ ํ•ฉ์นœ ๊ฒƒ๊ณผ ๊ฐ™์Œ.
  3. useRecoilValue : setter์„ ์ œ์™ธํ•œ atom์˜ ๊ฐ’๋งŒ ์ œ๊ณต. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ด€๋ฆฌ์—์„œ state์˜ ์—ญํ• 
  4. useSetRecoilState : setter๋งŒ ์ œ๊ณต. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ด€๋ฆฌ์—์„œ setState์˜ ์—ญํ• 
  5. 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 ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๊ฐ’์ด ์œ ์ง€๋œ๋‹ค.

Recoil-Persist ๊ณต์‹ ๋ฌธ์„œ

728x90
๋”๋ณด๊ธฐ
FRONTEND/React