일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- map()에는 key값이 필요
- 오공완 #리액트 공부 #React
- 리스트랜더링
- React
- 리액트
- 오공완
- 클래스 추가하기 #특정 url 클래스 추가 #사이트 접속시 클래스 추가 #오공완 #javascript
- Today
- Total
new_bird-hyun
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>
);
}
'코딩 공부' 카테고리의 다른 글
React vs Next.js - 라우팅 비교 (0) | 2025.04.05 |
---|---|
JavaScript - 객체 배열을 특정 조건으로 나누기 (분할) (0) | 2025.04.05 |
JavaScript - 객체 배열에서 중복 제거 (key 기준) (0) | 2025.04.04 |
React - useRef로 DOM 제어하기 (스크롤 이동) (0) | 2025.04.03 |
JavaScript - IntersectionObserver로 요소 감지하기 (0) | 2025.04.03 |