5. Reference APIs

atomFamily(options)

: atom ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Atom Family ๋Š” atom ์˜ ๋ชจ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

const elementPositionStateFamily = atomFamily({
  key: 'ElementPosition',
  default: [0, 0],
});

function ElementListItem({elementID}) {
  const position = useRecoilValue(elementPositionStateFamily(elementID));
  return (
    <div>
      Element: {elementID}
      Position: {position}
    </div>
  );
}

์œ„์ฒ˜๋Ÿผ atomFamily๋Š” atom๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ์ „๋‹ฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ RecoilState๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

selectorFamily(options)

: selector ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

atomFamily ์™€ ๋น„์Šทํ•˜๊ฒŒ selectorFamily ๋Š” selector ์˜ ๋ชจ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

selector ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ get, set, selector์˜ ์ฝœ๋ฐฑ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

selectorFamily ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  selector ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

const myNumberState = atom({
  key: 'MyNumber',
  default: 2,
});

const myMultipliedState = selectorFamily({
  key: 'MyMultipliedNumber',
  get: (multiplier) => ({get}) => {
    return get(myNumberState) * multiplier;
  },

  // optional set
  set: (multiplier) => ({set}, newValue) => {
    set(myNumberState, newValue / multiplier);
  },
});

function MyComponent() {
  // defaults to 2
  const number = useRecoilValue(myNumberState);

  // defaults to 200
  const multipliedNumber = useRecoilValue(myMultipliedState(100));

  return <div>...</div>;
}

useRecoilCallback(callback, deps)

: useCallback ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ Recoil ์ƒํƒœ์—์„œ callback์ด ๋™์ž‘ํ•˜๋„๋ก API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด hook ์€ ๋น„๋™๊ธฐ๋กœ ํ˜„์žฌ์˜ Recoil ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ ์ „์šฉ Snapshot ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” callback ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•ด๋‹น ์ƒํƒœ๋ฅผ ๊ตฌ๋…ํ•˜์ง€ ์•Š๊ณ  ์‹ถ์„ ๋•Œ

  • ๋ Œ๋”๋ง ์ด์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ (Pre-fetching)

Last updated

Was this helpful?