π Recoil 곡μ λ¬Έμ
https://recoiljs.org/ko/
μ΄λ² μ΅μ’ νλ‘μ νΈμμ μνκ΄λ¦¬λ₯Ό recoilλ‘ μμ νλ €κ³ ν΄μ recoilμ΄ λμ§ μ΄λ»κ² μ°λμ§ κ³΅μ λ¬Έμμ ChatGPTλ₯Ό μ΄μ©ν΄μ μμ보μλ€.
atomμ νν : atom({key: string, default: atom})
atomμ Recoilμμ κ°μ₯ κΈ°λ³Έμ΄ λλ μνλ₯Ό μ μνλ ν
μ΄λ€.
μ΄λ μ»΄ν¬λνΈ κ°μ 곡μ λλ μνλ₯Ό μμ±νλ©°, μνμ μ΄κΈ°κ°μ default μμ±μΌλ‘ μ€μ ν μ μλ€.
const counterState = atom({
key : 'counterState', // κ³ μ ν€
default : 0, // μ΄κΈ° κ°
})
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;
},
});
atomμ μνλ₯Ό μ½κ³ μ°κΈ° μν΄ μ¬μ©λλ€.
λ°ν κ°μ λ°°μ΄μ΄λ©° 첫λ²μ§Έ μμλ νμ¬ μν κ°, λλ²μ§Έ μμλ μν κ°μ μ
λ°μ΄νΈνλ ν¨μμ΄λ€.
λ§μΉ useStateμ μ μ¬ν ννμ΄λ€.
const [count, setCount] = useRecoilState(counterState);
atom λλ selectorμ νμ¬ κ°μ μ½κΈ° μν΄ μ¬μ©λλ€.
μ΄λ μ½κΈ° μ μ©μΌλ‘ μν κ°μ μ
λ°μ΄νΈν μ μλ€.
const doubledCount = useRecoilValue(doubledCounterState);