React Recoil
๊ฐ์
Atom์ value๋ฅผ ๋ฃ๊ณ ํ์ํ component๊ฐ ์ ๊ทผํด์ ์ฌ์ฉํ๊ฑฐ๋ ์์ ํจ
Traveling Prop์ ํด๊ฒฐํจ
RecoilRoot
recoil ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ ๋ถ๋ชจ ํธ๋ฆฌ์
RecoilRoot
๊ฐ ํ์ํ๋ฏ๋ก ๋ฃจํธ ์ปดํฌ๋ํธ์RecoilRoot
๋ฅผ ๋ฃ์ด์ค
Atom
Atom์ **์ํ(State)**์ ์ผ๋ถ๋ฅผ ๋ํ๋
Atoms๋ ์ด๋ ์ปดํฌ๋ํธ์์๋ ์ฝ๊ณ ์ธ ์ ์์
Atom์ ์ด๋ค ๋ณํ๊ฐ ์์ผ๋ฉด ๊ทธ Atom์ ๊ตฌ๋ ํ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด ์ฌ ๋๋๋ง ๋จ
// atoms.ts
export const textstate = atom({
key: "textState",
// unique ID (with respect to other atoms/selectors)
default: "",
// default value (aka initial value)
})
์ปดํฌ๋ํธ์์ atom์ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ Hook์ ์ฌ์ฉํ ์ ์์
Hooks
useRecoilValue(Atom)
: Atom์ ๊ฐ์ ๋ฐํuseSetRecoilState(Atom)
: Modifier๋ฅผ ๋ฐํuseRecoilState(Atom)
: ๊ฐ๊ณผ Modifier๋ฅผ ๋ฐํ(setState์ ๊ฐ์)
...
function TextInput() {
const [text, setText] = useRecoilState(textState);
const onChange = (event) => {
setText(event.target.value);
};
return (
<div>
<input type="text" value={text} onChange={onChange} />
<br />
Echo: {text}
</div>
);
}
Selector
Selector๋ ํ์๋ ์ํ(derived state)์ ์ผ๋ถ๋ฅผ ๋ํ๋
ํ์๋ ์ํ === ์ํ์ ๋ณํ
useRecoilValue(selector)
hook์ ์ฌ์ฉํด์ ๊ฐ์ ์ฝ์ ์ ์์
// atoms.ts
export const hourSelector = selector<number>({
key: "hours",
get: ({ get }) => {
const minutes = get(minuteState);
return minutes / 60;
},
set: ({ set }, newValue) => {
const minutes = Number(newValue) * 60;
set(minuteState, minutes);
},
});
Last updated