๐ ์ ์ ์ญ์ํ๊ด๋ฆฌ๋ฅผ ํด์ผํ ๊น?
React์ ์ฌ์ฉ๋ชฉ์ ์ component๋ก ๋ง๋ค์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ page๋ฅผ ๋ผ์ฐํธ ์ฒ๋ฆฌํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์ ๋ง ๋ง๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ชจ->์์์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ค. ex. ๊ฒ์๊ธ์ id๊ฐ, ์ผํ๋ชฐ ๊ตฌ๋งค ์๋ ๋ฑ
๊ทธ๋ฐ๋ฐ ์ํ๊ด๋ฆฌ(= ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ/๋ณ๊ฒฝํ๋ ๊ณผ์ ) ์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ์ ๋ถ๋ชํ๋๋ฐ ๋ช ๊ฐ์ง๋ฅผ ์๊ฐํ์๋ฉด
์ํ๊ด๋ฆฌ ์ ๋ฌธ์ ์
1.๋ถ๋ชจ-> ์์์๊ฒ๋ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.(์ผ๋ฐ์ ์ผ๋ก)
2.Props drilling์ผ๋ก ์ธํด ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค. (์๋์ Children์ด 100๊ฐ๋ผ๋ฉด...? ํ๊ฐ์ ์ํ๋ฅผ 100๋ฒ ๊ฑด๋ค์ค์ผํจ)
3.์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฒด์ธ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋๋๋ง๋๋ค.(Children3์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด Ch2,Ch1,Parent ๋ ์ฌ๋๋๋ง ๋จ)
//Parent.jsx(Props๋ก ์ํ์ ๋ฌ)
const Parents = () => {
const [state,setstate] = useState('ํจ๋ ์ข ํ๊ณ ์ด์')
return <Children1 data={state}></Children1>
}
//Children1.jsx
const Children1 = (props) => {
return <Children2 data={props.data}></Children2>
}
//Children2.jsx
const Children2 = (props) => {
return <Children3 data={props.data}></Children3>
}
//Childrens3.jsx
const Children3 = (props) => {
return <div>{props.data}</div>
}
์์ ๊ฐ์ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์ญ์ ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ฒจ๋ฌ๋ค.
๐ ์ ์ญ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ญ๊ฐ ์์๊น?
์๋๋ npm trends์์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๊ตํ ์งํ์ด๋ค. ํ ํด ๋์ ๋ค์ด๋ก๋๋์ ๋น๊ตํด์ค๋ค.
1๋ฑ Redux (9,200,000)
2๋ฑ Zustnad (3,100,000)
3๋ฑ Mobx(1,200,000)
4๋ฑ jotai 5๋ฑ recoil
๐ ์ํ๊ด๋ฆฌ์ ์ ๊ทผ๋ฐฉ์
์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๊ทผ ๋ฐฉ์์ 3๊ฐ์ง๋ก ๋๋ ๋ณผ ์ ์๋๋ฐ :
Flux (Redux, Zustand)
- Flux ํจํด์ ์ํ ๊ด๋ฆฌ์ ์ ํต์ ์ธ ๋ฐฉ์์ผ๋ก, ์ก์ (Action), ๋์คํจ์ฒ(Dispatcher), ์คํ ์ด(Store), ๊ทธ๋ฆฌ๊ณ ๋ทฐ(View)๋ก ๊ตฌ์ฑ๋๋ค.
- Redux์ Zustand๋ Flux ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ Redux๋ ๋ถ๋ณ์ฑ๊ณผ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์กฐํ๋ฉฐ, Zustand๋ ๊ฐ์ํ API์ ํจ์ํ ์คํ์ผ์ ๊ฐ์กฐํ๋ค.
์ฅ์ :
- ์ก์ ๊ณผ ๋ฆฌ๋์๋ฅผ ํตํ ๋ช ์์ ์ธ ์ํ ๋ณ๊ฒฝ์ผ๋ก ์ํ ๋ณํ๋ฅผ ์ถ์ ํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ์ฝ๋ค.
- ์ค์ ์ง์ค์ ์ํ ๊ด๋ฆฌ๋ก ์ํ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ ์ ์์.
๋จ์ :
- ๋ณต์กํ ์ํ ๊ด๋ฆฌ ์๋๋ฆฌ์ค์์ ๋ถํ์ํ ์ฝ๋๋ ์ค๋ณต์ด ๋ฐ์ํ ์ ์๋ค.
- ์ด๊ธฐ ํ์ต ๊ณก์ ์ด ๋ค์ ๋์ ์ ์์.
Proxy (Mobx, Valtio)
- Proxy ๊ธฐ๋ฐ์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ์ Proxy ๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฒด์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ๋ฐ์ํ์ฌ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
- MobX๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๊ฐ์ํ๊ณ , ํด๋น ๊ฐ์ฒด์ ์์ฑ์ด๋ ์์๊ฐ ๋ณ๊ฒฝ๋ ๋ ์๋์ผ๋ก ๋ฆฌ๋ ๋๋ง๋จ.
- Valtio๋ MobX์ ์ ์ฌํ์ง๋ง, React ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Jotai์ ํจ๊ป ์ฌ์ฉ๋ ์ ์๋๋ก ์ค๊ณ๋์๋ค.
์ฅ์ :
- ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ๋ฐ์ํ๋ ๋์ ์ธ ๋ฐฉ์์ผ๋ก ์ํ ๊ด๋ฆฌ๋ฅผ ์ํํ ์ ์๋ค.
- ์ํ๋ฅผ ์์ ํ๋ ๊ณผ์ ์ด ๊ฐ๋จํ๊ณ ์ง๊ด์ .
๋จ์ :
- ๊ฐ์ฒด์ ์์ฑ ๋ณ๊ฒฝ๋ง ๊ฐ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๊ฐ ์๋ ๋ค๋ฅธ ์ ํ์ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ธ ์ ์์.
- ๋ณต์กํ ์ํ์ ๊ด๋ฆฌ๋ ์ผ๋ถ ๋ณต์ก์ฑ์ ์ ๋ฐํ ์ ์๋ค.
Atomic (Jotai, Recoil)
- Atomic ์ํ ๊ด๋ฆฌ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ํธ๋ฆฌ ์์์ ์ํ๋ฅผ ์์์ * ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
- Jotai๋ ๋ฆฌ์กํธ์ useContext ํ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ๊ณต์ ๋ฅผ ์ํ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํจ.
- Recoil์ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ปดํฌ๋ํธ ๊ฐ์ ์ ์ญ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํจ.
์ฅ์ :
- ์ปดํฌ๋ํธ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ์ํ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์.
- ์ํ๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ๊ด๋ฆฌํ๊ณ , ์ํ์ ๋ณ๊ฒฝ์ด ํด๋น ์ปดํฌ๋ํธ๋ก ์ ํ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์.
๋จ์ :
- ์ ์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์๋ ํ๊ณ๊ฐ ์์ ์ ์๋ค.
- ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ๊ณต์ ๊ฐ ๋ณต์กํ ๊ฒฝ์ฐ์๋ ์ถ๊ฐ์ ์ธ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ ์๋ค.
์์์ ์ด๋?
์ํ๊ฐ ๊ฐ๊ฐ์ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌ๋๊ณ , ์ด๋ฌํ ์์ ๋จ์์ ์ํ๊ฐ ๋์์ ์ ๋ฐ์ดํธ๋์ด์ผ ํ ๋ ์ ์ฒด์ ์ผ๋ก ์ผ์ด๋์ผ ํ๋ ์ํ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๊ฒ
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ธ๊ฐ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ์ง ์์๋ณด์.
๐ผ Redux : ๊ตฌ๊ด์ด ๋ช ๊ด
ใ ๊ธฐ๋ณธ์ฉ์ด์ ๋ฆฌ
-์ก์ (Action)
์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํ ์ด๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ ๋ฌถ์.
-๋ฆฌ๋์(Reducer)
๋ฆฌ๋์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์. ์ด์ ์ํ์ ์ก์ ์ ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํจ.
-์คํ ์ด(Store)
์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด. ์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๊ฐ์ํ๊ณ , ๋ฆฌ๋์๋ฅผ ํตํด ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉฐ, ์ํ๋ฅผ ๋ณ๊ฒฝํ ํ์ ์๋ฆผ.
-๋์คํจ์น(Dispatch)
์ก์ ์ ๋ฐ์์ํค๋ ์ญํ ์ ํจ. ๋์คํจ์น๋ ์ก์ ์ ๋ฐ์ ์คํ ์ด์ ์ ๋ฌํ๊ณ , ์ดํ ๋ฆฌ๋์๊ฐ ํธ์ถ๋์ด ์ํ๋ฅผ ์ ๋ฐ์ดํธํจ.
์ฅ์ :
- ์์ธก ๊ฐ๋ฅํ ์ํ ๊ด๋ฆฌ: ๋จ์ผ ์ํ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ํ์ ๋ณํ๊ฐ ์์ธก ๊ฐ๋ฅํ๋ฉฐ, ๋๋ฒ๊น ์ด ์ฝ๋ค.
- ํ์ฅ์ฑ: ์ค์ ์ง์ค์ ์คํ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํจ. ์ด๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฝ๊ฒ ์ ๊ทผํ๊ณ ๋ณ๊ฒฝํ ์ ์์ด์ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ฉ์ดํจ.
- ์ปดํฌ๋ํธ ๋ถ๋ฆฌ: ์ํ๋ฅผ ์์ ํ ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌ์ํจ๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๋ถ๋ถ์ด ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ๋๊ณ ์ฌ์ฌ์ฉ๋ ์ ์์.
๋จ์ :
- ๋ฌ๋์ปค๋ธ: ์ฒ์์ ํ์ตํ๊ธฐ ์ด๋ ต๋ค ๋ณต์กํ๊ธฐ ๋๋ฌธ. ์ก์ , ๋ฆฌ๋์, ๋ฏธ๋ค์จ์ด ๋ฑ์ ๊ฐ๋ ์ ์ดํดํด์ผ ํ๋ฉฐ, ์ด๊ธฐ ์ค์ ๋ฐ ๊ตฌ์ฑ์ด ํ์ํจ.
- ๋ถํ์ํ ๋ณด์ผ๋ฌํ๋ ์ดํธ* ์ฝ๋: Redux๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ํ ๋ณํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ง์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ ์ด๋ ์์ ํ๋ก์ ํธ์์๋ ๋ถํ์ํ๊ฒ ๋ณต์กํด์ง.
๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋?
์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ํ์ํ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ์ด๊ธฐ ์ค์ ์ด๋ ํ ํ๋ฆฟ์ ์๋ฏธ(React์ CRA ๊ฐ์ ๊ฒ)
import { createStore } from 'redux';
// ์ด๊ธฐ ์ํ ์ ์
const initialState = {
count: 0
};
// ๋ฆฌ๋์ ์ ์
function reducer(state = initialState, action) {
switch (action.type) {
case 'INCREMENT':
return { ...state, count: state.count + 1 };
default:
return state;
}
}
// ์คํ ์ด ์์ฑ
const store = createStore(reducer);
// ์ปดํฌ๋ํธ์์ ์ํ ๋ณ๊ฒฝ์ ์ํ ์ก์
๋์คํจ์น
store.dispatch({ type: 'INCREMENT' });
๐ผ Zustand : simple is best
import { create } from 'zustand'
const useCountStore = create((set) => ({
count: 0,
increment: (qty) => set((state) => ({ count: state.count + qty })),
decrement: (qty) => set((state) => ({ count: state.count - qty })),
}))
const Component = () => {
const count = useCountStore((state) => state.count)
const increment = useCountStore((state) => state.increment)
const decrement = useCountStore((state) => state.decrement)
// ...
}
์ฅ์ :
- ๊ฐ๊ฒฐํจ: Zustand๋ Redux๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด๋ค. ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ณ๋์ ๋ฆฌ๋์๋ ์ก์ ์์ฑ์๋ฅผ ์์ฑํ ํ์๊ฐ ์์.
- ์ ํ์ ๋ถ๋ณ์ฑ: Zustand๋ ๋ถ๋ณ์ฑ์ ๊ฐ์ ํ์ง ์๋๋ค. ์ด๋ ์์ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ ํธ๋ฆฌํ๊ฒ ๋ง๋ค ์ ์์.
- ์ฑ๋ฅ: Zustand๋ ๋จ์ํ ์ํ ๊ด๋ฆฌ ๋๊ตฌ๋ก์ Redux๋ณด๋ค ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค. ์ด๋ ์์ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ถํ์ํ ๋ณต์ก์ฑ์ ์ค์ฌ์ค.
๋จ์ :
- ์ํ ๊ณต์ ์ ์ด๋ ค์: Zustand๋ ๊ฐ ์ปดํฌ๋ํธ์ ์ง์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ์ ์ ํฉํจ. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ๊ณ ๋๊ธฐํํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ๋ค.
- ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ์ ํฌ๊ธฐ: Zustand๋ Redux๋งํผ ํฐ ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ๋ ๋ค์ํ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์.
- ์ ์ฐ์ฑ์ ๋ถ์กฑ: Zustand๋ React์ ํนํ๋์ด ์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํธํ์ ์ถ๊ฐ ์ค์ ์ด ํ์ํ ์๋ ์๋ค. ๋ง์ฝ ํฅํ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์์๋๋ค๋ฉด ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํจ.
๐ผ Mobx : Always, i will see you
import { observable, action, computed } from 'mobx';
// observable ์ํ ์ ์
const counterState = observable({
count: 0,
});
// action์ผ๋ก ์ํ ๋ณ๊ฒฝ ๋ฉ์๋ ์ ์
const increment = action(() => {
counterState.count++;
});
// computed๋ฅผ ์ฌ์ฉํ์ฌ ํ์๋ ๊ฐ ๊ณ์ฐ
const doubleCount = computed(() => {
return counterState.count * 2;
});
// ์ํ ๋ณ๊ฒฝ ๋ฉ์๋ ํธ์ถ
increment();
// ํ์๋ ๊ฐ ์กฐํ
console.log(doubleCount.get()); // ์ถ๋ ฅ: 2
์ฅ์ :
- ๊ฐ๋จํจ: MobX๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํ๋ค. ์๋์ผ๋ก ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌํจ.
- ๋ฐ์์ฑ: MobX๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ์๋์ผ๋ก ์ ๋ฐ์ดํธํจ.
- ์ ์ฐ์ฑ: MobX๋ Redux์ ๋ฌ๋ฆฌ ์ก์ , ๋ฆฌ๋์, ๋์คํจ์ฒ ๋ฑ์ ๊ฐ๋ ์ด ํ์ํ์ง ์์์ ์ ์ง๋ณด์๊ฐ ๋ ๊ฐํธํ๋ค.
๋จ์ :
- ๋ฌ๋ ์ปค๋ธ: MobX์ ๊ฐ๋ ๊ณผ ๋์ ๋ฐฉ์์ ์ฒ์์ ์ดํดํ๊ธฐ ์ด๋ ค์ธ ์ ์์. ํนํ MobX์ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์ ์์กด์ฑ ๊ทธ๋ํ์ ๋์ ์๋ฆฌ ์ดํด๊ฐ ํ์ํจ.
- ์์ ๋๋ก ์ธํ ํผ๋: MobX๋ Redux๋ณด๋ค ์์ ๋ก์ด ๋ฐฉ์์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด๋ ํ๋ก์ ํธ์์ ์ผ๊ด๋ ํจํด์ ์ ์งํ๊ธฐ ์ด๋ ค์ธ ์ ์์.
- ์ปค๋ฎค๋ํฐ์ ํฌ๊ธฐ: MobX์ ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ๋ Redux๋งํผ ํฌ์ง ์์.
๐ ๋ง์น๋ฉฐ...
๋ค์ํ ์ ์ญ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์๋ดค๋ค. ์ง์ ํ๋ก์ ํธ์ ์ ์ฉํด๋ด์ผ ์ฐจ์ด๋ฅผ ์ฒด๊ฐํ ๊ฒ ๊ฐ๋ค. ๊ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ถ๊ตฌํ๋ ๋ฐฉํฅ์ฑ์ ๋ถ๋ช ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ด ํ๋ก์ ํธ๊ฐ ํฐ ๊ท๋ชจ์ธ๊ฐ, ์์ ๋จ์๋ก ๋ถ๋ฆฌ๊ฐ ํ์ํ๊ฐ, ๋น๋ฒํ ์ํ๋ณ๊ฒฝ์ด ํ์ํ๊ฐ ๋ฑ ์๊ฑด๋ค์ ๋ฐ์ ธ์ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ ์ง ๊ณ ๋ คํด์ผํ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ
https://docs.pmnd.rs/zustand/getting-started/introduction
Zustand Documentation
Zustand is a small, fast and scalable bearbones state-management solution, it has a comfy api based on hooks
docs.pmnd.rs
Redux - ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ ์ํ ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋. | Redux
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ ์ํ ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋.
ko.redux.js.org
https://mobx.js.org/react-integration.html
React integration · MobX ๐บ๐ฆ
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CEBD4KQ7&placement=mobxjsorg" id="_carbonads_js"></script>
mobx.js.org
'frontEnd > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3์ด์์ ํ๋ฉด ์๋จ๋ฉด ๋ ๋๋ค : CodeSplitting (1) | 2024.04.14 |
---|---|
๋ ์ง์ ์๊ฐ ํฌ๋งท ์ปค์คํ ํ๊ธฐ :Day.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ (1) | 2024.02.14 |
path ๊น๋ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ (0) | 2024.02.05 |
์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ : Socket.io (0) | 2024.01.09 |
Return ๋ฌธ์ Hook ์๋์ชฝ์ ์์ด์ผํ๋ค :Hook ๊ท์น (2) | 2024.01.08 |