React ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ ์ญ์ผ๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ถ์๋ค๐ฅ
์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ด์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๋น๊ตํ๊ณ ์ต์ข
์ ์ผ๋ก Recoil์ ์ ํํ ์ด์ ์ ๋ํด ํฌ์คํ
ํด๋ดโ๐ป
Props Drilling
๊ณผ ์ ์ญ ์ํ๊ด๋ฆฌProps Drilling
Props Drilling
์ด๋ผ๊ณ ํ๋ฉฐ, ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์์Props Drilling
์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ํ๋ฅผ ์ปดํฌ๋ํธ์์ ์ ์ธํ์ง ์๊ณ ์ ์ญ์ผ๋ก ๊ด๋ฆฌ
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์ญ ์ํ๊ด๋ฆฌ ์ ์ฅ์์์ ์ค๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์ฌ์ฉํ๋ฉด ํจ์ฌ ์ฝ๊ณ ํจ์จ์ ์ด๊ฒ ์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ด ๊ฐ๋ฅํจ ๊ทธ๋ฆผ์ถ์ฒ : ๋
๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ Context API
, Redux
, Recoil
์ด ์์
Provider
๋ก ๊ฐ์ธ์ฃผ๊ณ , ๊ณต์ ํ๋ ค๋ state๋ฅผ value
์ ๋ฃ์ด ๊ณต์ import { createContext, useState } from 'react';
// Context ๋ง๋ค ๋๋ ํญ์ Provider ๊ฐ์ด ๋ง๋ค์ด ์ค์ผํจ
// Context : data ๋ด๋ ๊ณณ
export const DarkModeContext = createContext();
// Provider : data ๊ฐ์ธ์ฃผ๋ ์ฐ์ฐ
// ๋ฐ์ ํ์ ์์๋ค ๊ฐ์ธ์ฃผ๋ ์์ ์ปดํฌ๋ํธ
// UI์ ์ผ๋ก ๋ณ๊ฒฝ์์ผ์ฃผ๋ ๊ฒ์ ์์ง๋ง, children์ ๊ฐ์ธ๋ ์ฐ์ฐ ์ญํ
export function DarkModeProvider({ children }) {
// ์ ์ญ์ผ๋ก ์ฌ์ฉ๋๋ data, ๊ทธ data ์ฒ๋ฆฌํ๋ ํจ์๋ค ์ฌ๊ธฐ ์์์ ๋ง๋ค๋ฉด ๋จ
const [darkMode, setDarkMode] = useState(false);
const toggleDarkMode = () => setDarkMode((mode) => !mode);
return (
// ํ์ ์ปดํฌ๋ํธ์ ๊ณต์ ํ๊ณ ์ถ์ ๊ฐ๋ค value๋ก ์ง์
// ์๋ ๊ฒฝ์ฐ ํค์ ๋ฐธ๋ฅ๊ฐ(๋ณ์๋ช
) ๊ฐ์์ ์ถ์ฝ
<DarkModeProvider.Provider value={{ darkMode, toggleDarkMode }}>
{children}
</DarkModeProvider.Provider>
);
}
Provider
์ ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ๋ค์ด ๊น์ด์ง๋ฉด ๊ฒฐ๊ตญ ๊ณต์ ํ๋ state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ์์ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด ์ฌ๋ ๋๋ง๋จProvider
๋ฅผ ํ์์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, Provider
๋ฅผ ์๋ก ์ถ๊ฐํ๋ฉด ํ์์ ๋ชจ๋ ์์๋ค์ด ๋ค์ ๋ง์ดํธ๋จ* ๋ง์ดํธ : ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ๊ฒ
Props Drilling
ํด๊ฒฐ์ ์ํด ์ฌ์ฉํ์ง๋ง, ์์์ Provider
๊ฐ ์ถ๊ฐ๋ tree ๊ตฌ์กฐ๊ฐ ๋จstore
: ์ํ๋ฅผ ์ ์ฅaction
: ์ํ๋ฅผ ์
๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒดdispatch
: action
์ store
์ ์ ๋ฌํ๋ ๋ฉ์๋reducer
: action
์ ๋ฐ๋ผ ์ํ๋ฅผ ์
๋ฐ์ดํธํ๋ ํจ์Redux
๋ฅผ ๋์
ํ๋ฉด ์คํ๋ ค ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ ์ ์์Redux
๋ ๋ง์ ์ถ๊ฐ์ ์ธ ์ฝ๋์ ์ค์ ์ด ํ์ํ๊ณ , ์๊ท๋ชจ์ ํ๋ก์ ํธ์์๋ ์ด๋ก ์ธํด ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ ์ ์์Recoil
์ ์๋์ ์ผ๋ก ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตContext API
ํ์ฉํด์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง,recoil
์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์
๊ทธ๋ฆผ์ถ์ฒ: ๋ ๋๋ฌด ๊ท์ฌ์ฐ์๋ค์