Recoil์ ์ ์ญ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฆฌ์กํธ ์นํ์ ์ธ ๋ฌธ๋ฒ๊ณผ ๊ทธ ์ฌ์ฉ์ด ๊ฐํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก CNU SW ์์นด๋ฐ๋ฏธ TA๋์๊ฒ ์ถ์ฒ๋ฐ์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ฆฌ๋์ค๋ ๊ทธ ์ดํ์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ , recoil์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํ๊ณ ์ ํ๋ค.
์ด ๊ธ์ ์ฝ์ผ๋ฉด ์์ฃผ ๊ธฐ๋ณธ์ ์ธ recoil ์ฌ์ฉ๋ฐฉ๋ฒ์ ์๊ฒ ๋ ๊ฒ์ด๋ค.
Recoil ์ค์น
npm install recoil
RecoilRoot
import React from 'react';
import {
RecoilRoot,
} from 'recoil';
function App() {
return (
<RecoilRoot>
<CharacterCounter />
</RecoilRoot>
);
}
recoil์ ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ ๋ถ๋ชจํธ๋ฆฌ ์ด๋๊ฐ์ ๋ํ๋๋ RecoilRoot๊ฐ ํ์ํ๋ค๊ณ ํ๋ค. ๊ณต์ ํํ์ด์ง์์๋ ๋ฃจํธ ์ปดํฌ๋ํธ์ ๋ฃ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
Atom
const textState = atom({
key: 'textState', // unique ID (with respect to other atoms/selectors)
default: '', // default value (aka initial value)
});
recoil์์๋ Atom์ด ์ํ์ด๊ณ ์ ์ญ์ ์ธ ๊ฐ์ด๋ค. recoilRoot ์์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ atom์ ๊ฐ์ ์ฝ๋ ์ปดํฌ๋ํธ๋ ์๋ฌต์ ์ผ๋ก atom์ ๊ตฌ๋ ํ์ฌ atom์ด ๋ฐ๋๊ฒ ๋๋ฉด atom์ ๊ตฌ๋ ํ๋ ์ปดํฌ๋ํธ๋ค์ด ์ฌ๋ ๋๋ง ๋๋ค๊ณ ํ๋ค.
Atom ์ฌ์ฉ๋ฒ
const [text, setText] = useRecoilState(textState);
๋ค๋ฅธ ์ปดํฌ๋ํธ์์ useRecoilState()ํ ์ ์ด์ฉํ์ฌ ์ธ์๋ก atom์ ๋๊ธฐ๋ฉด atom์ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ์ atom์ ์ ๋ฐ์ดํธํ๋ ํจ์๋ฅผ ์ป์ ์ ์๋ค.
Selector
Selector๋ ์ํ(state)๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ณํํ์ฌ ๋ฐํํ๋ ์์ ํจ์๋ฅผ ๊ฑฐ์ณ ๋ฐํ๋ ๊ฐ์ด๋ผ๊ณ ํ๋ค. atom์ ์ํ๋ selector๋ฅผ ํ์ฉํ์ฌ atom์ state๋ฅผ ํ์ํ ํํ๋ก ๋ฐ๊ฟ ์ ์๋ค. atom ์ state๊ฐ ๋ณํ๋ฉด selector์ state๋ ๊ฐ์ด ๋ณํ๋ค.
Selector ์ฌ์ฉ๋ฒ
const charCountState = selector({
key: 'charCountState', // unique ID (with respect to other atoms/selectors)
get: ({get}) => {
const text = get(textState);
return text.length;
},
});
์์ get์์ ์๋ textState๋ atom์ผ๋ก ์ ์ธํ๋ state์ด๋ค. text์ state๋ฅผ text.length๋ก ๋ณํํ์ฌ ๋ฐํํ๋ selector์ด๊ณ textState๊ฐ ๋ณํ๋ฉด ์๋์ผ๋ก ๋ณํ๊ฒ ๋๋ค.
๋น๋๊ธฐ์ ๊ด๋ จํด์๋ ์์ง ์ค๋ ฅ์ด ๋ถ์กฑํ๊ณ ํ๋ก์ ํธ๋ ๋ง์ด ๋ง๋ค์ด๋ณด์ง ์์๊ธฐ ๋๋ฌธ์ ํ์ฌ๋ก์๋ ์ค๋ช ํ๊ธฐ ์ด๋ ต์ง๋ง ์ฐจํ์ ์ค๋ช ์ ์งํํ ์์ ์ด๋ค.
Reference
https://hgko1207.github.io/2022/07/25/react-6/
[React] Recoil ์ฌ์ฉ ๋ฐฉ๋ฒ
Recoil ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. Recoil Recoil ๋ ํ์ด์ค๋ถ์์ ๋ง๋ React๋ฅผ ์ํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Recoil์ ์ฌ์ฉํ๋ฉด atoms (๊ณต์ ์ํ)์์ selectors (์์ ํจ์)๋ฅผ ๊ฑฐ์ณ React ์ปดํฌ๋
hgko1207.github.io
'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] react-query ์ useQuery ์์๋ณด๊ธฐ (0) | 2023.08.01 |
---|---|
[React] Styled-components ์ฌ์ฉ๋ฒ๊ณผ ์ ์ฉํ ๊ธฐ๋ฅ๋ค (0) | 2023.07.28 |
[React] ์ํ๊ด๋ฆฌ์ ํ์์ฑ๊ณผ ๋ฆฌ๋์ค ver 1 (0) | 2023.07.26 |
[React]TIL (0) | 2023.07.18 |
[React] ๋ฐฐ์ด ๋ ๋๋ง ์ ์ฃผ์์ฌํญ (0) | 2023.07.08 |