React - Context + useContext로 전역 상태 관리
// context/ThemeContext.jsx
import { createContext, useContext, useState } from 'react';
const ThemeContext = createContext();
export function ThemeProvider({ children }) {
const [theme, setTheme] = useState('light');
const toggleTheme = () => setTheme((prev) => (prev === 'light' ? 'dark' : 'light'));
return (
<ThemeContext.Provider value={{ theme, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
}
export const useTheme = () => useContext(ThemeContext);
// pages/_app.jsx
import { ThemeProvider } from '../context/ThemeContext';
export default function App({ Component, pageProps }) {
return (
<ThemeProvider>
<Component {...pageProps} />
</ThemeProvider>
);
}
// pages/index.jsx
import { useTheme } from '../context/ThemeContext';
export default function Home() {
const { theme, toggleTheme } = useTheme();
return (
<div style={{ background: theme === 'dark' ? '#333' : '#fff' }}>
<h1>현재 테마: {theme}</h1>
<button onClick={toggleTheme}>테마 전환</button>
</div>
);
}