React Native ์ฑ์ ๋ง๋ค๋ค ๋ณด๋ฉด
ํ๋ฉด ์ ํ์ด ๋ง๊ณ , ์ปดํฌ๋ํธ ๊ฐ ์ํ ๊ณต์ ๋ ์ฆ๊ณ , ๋น๋๊ธฐ ํต์ ๋ ํํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
๊ทธ๋ด์๋ก ์ํ ๊ด๋ฆฌ๋ ์ฝ๋์ ๋ผ๋์ฒ๋ผ ์ค์ํด์ง๋ค.
์ด๋ฒ ๊ธ์์๋ ๋ชจ๋ฐ์ผ ์ฑ์์ ์ค์ ๋ก ์์ฃผ ์ฐ์ด๋
Context, Zustand, Redux Toolkit์ ๋น๊ตํ๊ณ ,
๊ฐ ๋ฐฉ์์ ํน์ง, ์ฅ๋จ์ , ์ค์ ์ฌ์ฉ ์์ ๋ฅผ ์ ๋ฆฌํด๋ดค๋ค.
React ๊ธฐ๋ณธ ์ ๊ณต, ๊ฐ๋ณ๊ณ ๊ฐ๋จํ ์ ์ญ ์ํ ๊ณต์ ๋ฐฉ์
const ThemeContext = createContext();
export function ThemeProvider({ children }) {
const [isDark, setIsDark] = useState(false);
return (
<ThemeContext.Provider value={{ isDark, setIsDark }}>
{children}
</ThemeContext.Provider>
);
}
export function useTheme() {
return useContext(ThemeContext);
}
โ
๊ฐ๋จํ ํ ๊ธ, ๋คํฌ๋ชจ๋, ์ฌ์ฉ์ ์ ๋ณด ๋ฑ์ ์ ํฉ
โ ๊น์ ํธ๋ฆฌ์์ ์ฑ๋ฅ ์ด์ ๊ฐ๋ฅ
โ ์ํ๊ฐ ๋ง์์ง๋ฉด ๊ตฌ์กฐ ๋ณต์ก
๊ฐ๊ฒฐํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์น์์๋ ์ธ๊ธฐ)
npm install zustand
import { create } from 'zustand';
export const useUserStore = create((set) => ({
user: null,
setUser: (user) => set({ user }),
}));
useUserStore()
๋ก ์ํ ์ ๊ทผ ๊ฐ๋ฅ subscribe
, persist
(๋ก์ปฌ ์ ์ฅ), middleware
๋ฑ๋ ์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅ โ
์ํ ๋ถ๋ฆฌ, ๊ตฌ์กฐํ ์ฌ์
โ
persist
๋ก ๋ก์ปฌ ์ ์ฅ ๊ฐ๋ฅ (ํ ํฐ, ํ
๋ง ๋ฑ์ ์ ์ฉ)
โ ์์ง ๊ณต์ devtools๋ ์ฝํจ
์ํ๊ด๋ฆฌ์ ์ ์, ๋๊ท๋ชจ ์ฑ์ด๋ ๋ณต์กํ ์ํ ์ฒ๋ฆฌ์ ์ ํฉ
npm install @reduxjs/toolkit react-redux
โ
๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง
โ
์๋ฒ ์ํ์์ ํตํฉ (RTK Query)
โ ์ค์ ๋ณต์ก, ์ฝ๋ ๋ง์
ํญ๋ชฉ | Context | Zustand | Redux Toolkit |
---|---|---|---|
๋์ด๋ | ์ฌ์ | ์ค๊ฐ | ๋์ |
์ฌ์ฉ ๊ท๋ชจ | ์๊ท๋ชจ | ์ค~๋๊ท๋ชจ | ๋๊ท๋ชจ |
์ํ ๊ตฌ์กฐํ | ์ ํ์ | ๋งค์ฐ ์ ์ฐ | ๊ฐ๋ ฅํจ |
์ฑ๋ฅ ์ต์ ํ | ์๋ ํ์ | ์๋ ๋ถ๋ฆฌ ๊ฐ๋ฅ | ๊ณ ์ฑ๋ฅ (with slice) |
๋น๋๊ธฐ ์ฒ๋ฆฌ | ์ง์ ๊ตฌํ | ์์ ๋กญ๊ฒ | Thunk, RTK Query |
๋ก์ปฌ์ ์ฅ ์ฐ๋ | ์๋ | persist ๋ก ์ฌ์ | ์๋ or middleware |
์ํฉ | ์ถ์ฒ ๋๊ตฌ |
---|---|
๋คํฌ๋ชจ๋, ์ธ์ด ์ ์ญ ์ค์ | Context |
๋ก๊ทธ์ธ ์ํ, ํ ํฐ ์ ์ฅ | Zustand (persist) |
API ์ํ ์บ์ฑ, ๋ทฐ ๊ฐ ๊ณต์ | Zustand or Redux |
๋๊ท๋ชจ ํ์ , ๋ณต์กํ ๋ก์ง | Redux Toolkit |
์ฒ์์๋ Context๋ง์ผ๋ก ๋ค ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ๋๋ฐ,
๋ก๊ทธ์ธ ์ํ๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฐ๋ค ๋ณด๋
๋ถํ์ํ ๋ ๋๋ง, ํธ๋ฆฌ ๊น์ด, prop drilling ํํผ ๋ฑ์ผ๋ก ๋๋ฌด ๋ณต์กํด์ก๋ค.
์ง๊ธ์ ๋๋ถ๋ถ Zustand๋ก ์ํ๋ฅผ ๋๋๊ณ ,
API ์บ์ฑ์ด ํ์ํ ๋ถ๋ถ๋ง React Query,
์ง์ง ๋ณต์กํ ์ฑ์ Redux๋ก ์ ํํ๋ ๊ตฌ์กฐ๋ฅผ ์ฐ๊ณ ์๋ค.
๐ง โ์ฑ์ ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ์๋ก ์ํ๊ด๋ฆฌ๋ ๊ตฌ์กฐ ์ค๊ณ๊ฐ ๋๋ค.โ