Recoil - woowa-techcamp-2021/store-4 GitHub Wiki
Recoil ํ๊ธ ๋ฌธ์ https://recoiljs.org/ko/
React๋ฅผ ์ํ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
-
์๊ณ React ์ค๋ฌ์ด
React์ ๋ด๋ถ์ํ์ ๊ฐ์ด
get/set
์ธํฐํ์ด์ค๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต
์ํ์ ๋จ์
๋ฆฌ์กํธ์ state์ ์ ์ฌ
์ต์ํ์ ์ํ๋ฅผ atoms๋ก ๊ด๋ฆฌํ๋ฉฐ ๊ทธ ์ธ๋ ๋ชจ๋ selectors ์์ํจ์๋ฅผ ํตํด ๊ณ์ฐํ์ฌ ์ฌ์ฉ
- ์ธ๋ชจ์๋ ์ํ์ ๋ณด์กด์ ๋ฐฉ์ง
์ปดํฌ๋ํธ ์ ์ฅ์์ atoms์ ๋์ผํ ์ธํฐํ์ด์ค๋ก ๋์
const fontSizeState = atom({
key: 'fontSizeState',
default: 14,
});
const fontSizeLabelState = selector({
key: 'fontSizeLabelState',
get: ({get}) => {
const fontSize = get(fontSizeState);
const unit = 'px';
return `${fontSize}${unit}`;
},
});
//
function FontButton() {
const [fontSize, setFontSize] = useRecoilState(fontSizeState);
return (
<div>
<p style={{fontSize}}>font size change</p>
<button onClick={() => setFontSize((size) => size + 1)} style={{fontSize}}>
Click to Enlarge
</button>
</div>
);
}
function FontButton() {
const [fontSize, setFontSize] = useRecoilState(fontSizeState);
const fontSizeLabel = useRecoilValue(fontSizeLabelState);
return (
<>
<div>Current font size: ${fontSizeLabel}</div>
<button onClick={setFontSize(fontSize + 1)} style={{fontSize}}>
Click to Enlarge
</button>
</>
);
}
- React์ ์ ์ฌํ ์ธํฐํ์ด์ค
- selectors์ ๋ก์ง์ ๋ถ๋ฆฌ
- Recoil 0.4
- ๋ฌธ์, ์ปค๋ฎค๋ํฐ