ํ์ฌ์์ ์๋ก์ด React ํ๋ก์ ํธ๋ฅผ ์ธํ ์ค์ธ๋ฐ, ์ ์ญ ์ํ๊ด๋ฆฌ ํด ์ค์์ ํ์๋ค์ด ๋น ๋ฅด๊ฒ ๋ฐฐ์ฐ๊ณ ํ์ฉํ ์ ์๋๋ก ์ฝ๊ฒ React ํ๋ก์ ํธ์ ์ํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ํด 2๊ฐ์ง๋ฅผ ๋น๊ตํด ๋ณด๊ฒ ๋์๋ค.
Recoil (v0.7.7 ๊ธฐ์ค)
์ ์ฒด ์นด์ดํฐ ์ฝ๋
Recoil์ ์๋์ฒ๋ผ ์ฐ์ธ๋ค. (ํ
์คํธ ์ฝ๋ ์ผ๋ถ)
import "./App.css";
import { countState } from "./state/countState";
import { useRecoilValue, useSetRecoilState, useResetRecoilState } from "recoil";
function App() {
const count = useRecoilValue(countState);
const setCount = useSetRecoilState(countState);
const removeAllCounts = useResetRecoilState(countState);
return (
<div className="App">
<div>
<img
src="https://recoiljs.org/img/logo.svg"
className="logo"
alt="recoil logo"
style={{ backgroundColor: "#ffffff" }}
/>
</div>
<h1>Test Recoil !</h1>
<div className="card">
<button onClick={() => setCount((state) => state + 1)}>
count is {count}
</button>
</div>
<div className="card">
<button onClick={removeAllCounts}>remove counts</button>
</div>
</div>
);
}
export default App;
- react์ useState์ ๋น์ทํ๊ฒ ์ฌ์ฉํ ์ ์์ด์ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์
- ์ด๊ธฐ ์ธํ
์ด ํ์ํจ. (recoil์ ์ฌ์ฉํ ์ต์์ ์ปดํฌ๋ํธ์ RecoilRoot ์ ์ธ ๋ฑ๋ฑ)
- state์ ๋ํ ์ก์
์ด component ๋จ์๋ก ์ผ์ด๋์ ์ก์
์ ๋ํ ๊ด๋ฆฌ๊ฐ ๊น๋ค๋ก์ธ ์ ์์.
- recoil๋ง์ state์ ๋ํ ๊ฐ๋
์ด ์กด์ฌ (atom)
- ์ก์ ์ ๋ํ ์ปค์คํ ๋ค์ด๋ฐ ๋ถ๊ฐ๋ฅ. (์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ฐ๋ก hook์ ๋ง๋ค๊ฑฐ๋, ํจ์๋ฅผ ๋ง๋ค์ด์ ์จ์ผํจ.)
Zustand (v4.3.8 ๊ธฐ์ค)
import "./App.css";
import { useCountStore } from "./store/countStore";
function App() {
const count = useCountStore((state) => state.count);
const increaseCount = useCountStore((state) => state.increaseCount);
const removeAllCounts = useCountStore((state) => state.removeAllCounts);
return (
<div className="App">
<div>
<img
src="https://github.com/pmndrs/zustand/raw/main/bear.jpg"
className="logo zustand"
alt="zustand logo"
/>
</div>
<h1>Test Zustand !</h1>
<div className="card">
<button onClick={increaseCount}>count is {count}</button>
</div>
<div className="card">
<button onClick={removeAllCounts}>remove counts</button>
</div>
</div>
);
}
export default App;
์ ์ฒด ์นด์ดํฐ ์ฝ๋
- ์์ฒญ ์ฌํํ๊ฒ ์ฌ์ฉํ ์ ์์.
- store์ ์ปดํฌ๋ํธ์ ๋ถ๋ฆฌํ์ฌ state, get, set ๋ฑ์ ์ก์
๊น์ง ํ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํจ.
- ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๊ด๋ฆฌ๊ฐ ์ฉ์ด.
- ๋ด์ฅ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์คํ ๋ฆฌ์ง ์ฌ์ฉ ๊ฐ๋ฅ.
- state์ ๋ํ ์ก์ ์ ๋ํด ๋ค์ด๋ฐ ๊ฐ๋ฅ.
-> ๊ธฐ์กด์ ์ฌ์ด๋ ํ๋ก์ ํธ์์ Recoil์ ์ฌ์ฉํ์ผ๋, Zustand๋ฅผ ์ฌ์ฉํด๋ณด๋ ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ ์ญ ์ํ์ ๊ด๋ฆฌ๊ฐ Recoil๋ณด๋ค Zustand๊ฐ ์ฉ์ดํ ๊ฒ ๊ฐ๋ค๋ ํ๋จ์ด ๋์ด, ์ฐ๋ฆฌ๋ Zustand๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
๐ธ ์ถ์ฒ ๐ธ
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Next.js ] Next13์์ ์ปค์คํ Font ์ธํ ํ๊ธฐ. (App Router ๊ธฐ์ค) (0) | 2023.06.20 |
---|---|
[ Next.js ] Next13์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ํด ์์๋ณด์. (0) | 2023.06.05 |
[ React ] React Props ์์๋ณด๊ธฐ. (0) | 2023.03.20 |
[ webpack ] React(๋ฆฌ์กํธ)์ webpack(์นํฉ) (0) | 2023.03.05 |
[ React ] React Element ์ Component์ ์ฐจ์ด์ (0) | 2023.02.24 |