recoil

๋ฆฌ์ถฉ๋…•ยท2024๋…„ 1์›” 3์ผ

React

๋ชฉ๋ก ๋ณด๊ธฐ
23/29

๐Ÿ“‹ recoil

ํŽ˜์ด์Šค๋ถ์—์„œ ์ถœ์‹œํ•œ ๋ฆฌ์•กํŠธ๋ฅผ ์œ„ํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
๋‹ค๋ฅธ ์ „์—ญ ์ƒํƒœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ์„ค์ •, ์‚ฌ์šฉ์ด ํŽธ๋ฆฌํ•˜๋ฉฐ ๋ฆฌ์•กํŠธ ๋ฌธ๋ฒ•๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค.


์‚ฌ์šฉ๋ฒ•

์„ค์น˜

npm install recoil


RecoilRoot

recoil ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ๋ถ€๋ชจ ํŠธ๋ฆฌ์— ReocilRoot๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๋ฃจํŠธ ์ปดํฌ๋„ŒํŠธ์— ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

  • index.tsx
root.render(
  <RecoilRoot>
  	<App />
  </RecoilRoot>
);

Atom

-Atom์€ ์ƒํƒœ์˜ ์ผ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • Atoms๋Š” ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ์—์„œ๋‚˜ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • atom์˜ ๊ฐ’์„ ์ฝ๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ์•”๋ฌต์ ์œผ๋กœ atom์„ ๊ตฌ๋…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— atom์— ๋ณ€ํ™”๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น atom์„ ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌ ๋ Œ๋”๋ง ๋œ๋‹ค.

atom function

atom()์€ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ state๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” atom์„ ๋งŒ๋“ ๋‹ค.

๋‘๊ฐœ์˜ ์ธ์ž ํ•„์š”๋กœ ํ•˜๋Š”๋ฐ ์ธ์ž๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ธ์ž : ์œ ์ผํ•œ ์ด๋ฆ„์˜ ํ‚ค ๊ฐ’
๋‘ ๋ฒˆ์งธ ์ธ์ž : ๊ธฐ๋ณธ๊ฐ’

import { atom } from "recoil"

export const isDarkAtom = atom({
    key : "isDark",	// ์ €์žฅํ•  state ์ƒํƒœ
    default : false	// state์˜ ๊ธฐ๋ณธ ๊ฐ’
})

useRecoilValue

์ฃผ์–ด์ง„ reocil ์ƒํƒœ์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

useRecoilValue๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ƒํƒœ์™€ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒํƒœ์—์„œ ๋ชจ๋‘ ๋™์ž‘ํ•˜๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒํƒœ๋ฅผ ์ฝ์„ ์ˆ˜๋งŒ ์žˆ๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์— ์ถ”์ฒœํ•˜๋Š” hook์ด๋‹ค.

import { useRecoilValue } from 'recoil';

const isDark = useRecoilValue(isDarkAtom);	// false

useSetRecoilState

์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ recoil ์ƒํƒœ์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•œ setter ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

useSetRecoilState๋Š” ์ƒํƒœ๋ฅผ ์ฝ์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ๋งŒ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•˜๋Š” hook์ด๋‹ค.

const setTheme = useSetRecoilState(isDarkAtom);

// ํ…Œ๋งˆ ๋ณ€๊ฒฝ ํ•จ์ˆ˜
const handleTheme = () => {
  setTheme((prevState) => !prevState);
}

์ฐธ๊ณ 

๋…ธ๋งˆ๋“œ์ฝ”๋”
recoil ๊ณต์‹๋ฌธ์„œ
useRecoilValue ๊ณต์‹๋ฌธ์„œ
useSetRecoilState ๊ณต์‹๋ฌธ์„œ

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