React์์ ์ํ(state)๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ง๋ค.
useState
, useReducer
, Context
, Zustand
, Redux
, Recoil
๋ฑ๋ฑโฆ
ํ์ง๋ง ์ด ์ค ์ด๋ค ๊ฑธ ์ธ์ ์จ์ผ ํ ๊น?
์ฌ์ค ๊ทธ๋ณด๋ค ๋จผ์ ์ ๋ฆฌํด์ผ ํ ๊ฑด
"์ด ์ํ๋ ์ ์ญ์ด์ด์ผ ํ๋๊ฐ, ์ง์ญ์ด์ด์ผ ํ๋๊ฐ?" ๋ผ๋ ๊ธฐ์ค์ด๋ค.
์ปดํฌ๋ํธ ๋ด๋ถ์์๋ง ์ฌ์ฉ๋๋ ์ํ
โuseState
,useReducer
๋ก ๊ด๋ฆฌ
const [isOpen, setIsOpen] = useState(false);
๐ ํด๋น ์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฏธ๊ฐ ์๊ณ ,
props๋ก ๋๊ฒจ์ฃผ์ง ์๋ ํ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ ๊ทผํ ์ ์๋ค.
์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๋์์ ์ ๊ทผํ๊ณ ๊ณต์ ํด์ผ ํ๋ ์ํ
โ Redux, Zustand, Recoil, Context API ๋ฑ ์ฌ์ฉ
// ์: Zustand ์ ์ญ ์ํ
const useUserStore = create((set) => ({
user: null,
setUser: (user) => set({ user }),
}));
๐ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ ์ญ ์ํ๋ ์ ์ ๋ง์์ง๋๋ฐ,
๋ถํ์ํ ์ ์ญํ๋ ์คํ๋ ค ์ฑ๋ฅ ์ ํ์ ๋ณต์ก์ฑ๋ง ๋ง๋ ๋ค.
์ง๋ฌธ | ์ ์ญ ์ํ์ผ ๊ฐ๋ฅ์ฑ |
---|---|
์ด ์ํ๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฐธ์กฐํ๋? | โ ์ |
ํ์ด์ง ์ ํ ํ์๋ ์ํ๊ฐ ์ ์ง๋์ด์ผ ํ๋? | โ ์ |
์ธ๋ถ API, ์์ผ ๋ฑ ์ธ๋ถ์ ์ฐ๊ด๋์๋? | โ ์ |
์ด ์ํ๊ฐ ํน์ UI์๋ง ์ํฅ์ ์ฃผ๋๊ฐ? | โ ์๋์ค โ ์ง์ญ ์ํ๋ก ๊ฐ๋ฅ |
๋ถ๋ชจ-์์ ๊ฐ์๋ง ๊ณต์ ๋๋? | โ props๋ก ์ ๋ฌํ๋ฉด ์ถฉ๋ถ |
useState
๋ก ๋ถ๋ฆฌuseState
์์ ์ ์ํ๊ฐ ์๊ธฐ๋ฉด ๋ฌด์กฐ๊ฑด Zustand๋ก ๋ค ๋ฃ์๋ค.
๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ๊ฐ ์ปค์ง๋๊น ์ ์ญ ์ํ๋ฅผ ์ถ์ ํ๋ ๊ฒ ๋ ํ๋ค์ด์ก๋ค.
์ง๊ธ์ ๋ฌด์กฐ๊ฑด "์ด๊ฑด ์ง์ง ์ ์ญ์ด์ด์ผ ํด?"๋ฅผ ๋จผ์ ์๋ฌธํ๋ค.
๊ทธ ๊ธฐ์ค๋ง ์ธ์ฐ๋ฉด ์ํ ๊ด๋ฆฌ๋ ํจ์ฌ ์ฌ์์ง๊ณ ,
๋ฒ๊ทธ๋ ์ค๊ณ , ๋ฆฌ๋ ๋๋ง๋ ์ค์ด๋ค์๋ค.
๐ง "์ํ ๊ด๋ฆฌ๋, ๋จผ์ '๋ฒ์'๋ฅผ ์ ํ ๋ค์์ '๋๊ตฌ'๋ฅผ ๊ณ ๋ฅด๋ ์ผ์ด๋ค."