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