[React] Recoil

또띠·2023λ…„ 10μ›” 8일
0

React

λͺ©λ‘ 보기
1/17

πŸ“ Recoil 곡식 λ¬Έμ„œ
https://recoiljs.org/ko/

이번 μ΅œμ’… ν”„λ‘œμ νŠΈμ—μ„œ μƒνƒœκ΄€λ¦¬λ₯Ό recoil둜 μž‘μ—…ν•˜λ €κ³  ν•΄μ„œ recoil이 뭔지 μ–΄λ–»κ²Œ μ“°λŠ”μ§€ 곡식 λ¬Έμ„œμ™€ ChatGPTλ₯Ό μ΄μš©ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€.

atom

atom의 ν˜•νƒœ : atom({key: string, default: atom})

atom은 Recoilμ—μ„œ κ°€μž₯ 기본이 λ˜λŠ” μƒνƒœλ₯Ό μ •μ˜ν•˜λŠ” 훅이닀.
μ΄λŠ” μ»΄ν¬λ„ŒνŠΈ 간에 κ³΅μœ λ˜λŠ” μƒνƒœλ₯Ό μƒμ„±ν•˜λ©°, μƒνƒœμ˜ μ΄ˆκΈ°κ°’μ„ default μ†μ„±μœΌλ‘œ μ„€μ •ν•  수 μžˆλ‹€.

const counterState = atom({
	key : 'counterState', // 고유 ν‚€
  	default : 0, // 초기 κ°’
})

selector

selector의 ν˜•νƒœ : selector({key: string, get: ({get}) => any})

selectorλŠ” λ‹€λ₯Έ Recoil μƒνƒœλ“€μ„ 기반으둜 μƒˆλ‘œμš΄ 값을 계산할 λ•Œ μ‚¬μš©λœλ‹€.
이λ₯Ό 톡해 νŒŒμƒλœ μƒνƒœλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
μ—¬κΈ°μ„œ νŒŒμƒλœ μƒνƒœλž€ λ‹€λ₯Έ μƒνƒœλ₯Ό 기반으둜 κ³„μ‚°λ˜λŠ” μƒνƒœλ₯Ό λ§ν•œλ‹€.

atomκ³Ό keyλ₯Ό κ°–λŠ”λ‹€λŠ”κ±΄ λ™μΌν•˜μ§€λ§Œ defaultλŒ€μ‹  get을 μ‚¬μš©ν•œλ‹€.

const doubledCounterState = selector({
  key: 'doubledCounterState',
  get: ({ get }) => {
    const counter = get(counterState);
    return counter * 2;
  },
});

useRecoilState

atom의 μƒνƒœλ₯Ό 읽고 μ“°κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.
λ°˜ν™˜ 값은 배열이며 첫번째 μš”μ†ŒλŠ” ν˜„μž¬ μƒνƒœ κ°’, λ‘λ²ˆμ§Έ μš”μ†ŒλŠ” μƒνƒœ 값을 μ—…λ°μ΄νŠΈν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.
마치 useState와 μœ μ‚¬ν•œ ν˜•νƒœμ΄λ‹€.

const [count, setCount] = useRecoilState(counterState);

useRecoilValue

atom λ˜λŠ” selector의 ν˜„μž¬ 값을 읽기 μœ„ν•΄ μ‚¬μš©λœλ‹€.
μ΄λŠ” 읽기 μ „μš©μœΌλ‘œ μƒνƒœ 값을 μ—…λ°μ΄νŠΈν•  수 μ—†λ‹€.

const doubledCount = useRecoilValue(doubledCounterState);
profile
✨ π‘¬π’—π’†π’“π’šπ’•π’‰π’Šπ’π’ˆ π’„π’π’Žπ’†π’” 𝒕𝒐 π’‰π’Šπ’Ž π’˜π’‰π’ 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 π’˜π’‰π’Šπ’π’† 𝒉𝒆 π’˜π’‚π’Šπ’•π’”. ✨

0개의 λŒ“κΈ€