Deskripsi Proyek:
Aplikasi kecil yang memungkinkan user mengganti tema aplikasi (light / dark) menggunakan context.
Aplikasi kecil yang memungkinkan user mengganti tema aplikasi (light / dark) menggunakan context.
Langkah 1: Buat Context-nya
// ThemeContext.js import { createContext } from 'react'; const ThemeContext = createContext(); export default ThemeContext; Langkah 2: Provider untuk Theme
jsxCopyEdit// ThemeProvider.js import React, { useState } from 'react'; import ThemeContext from './ThemeContext'; export default 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> ); } Langkah 3: Konsumsi useContext di Komponen
// App.js import React, { useContext } from 'react'; import ThemeProvider from './ThemeProvider'; import ThemeContext from './ThemeContext'; function ThemedComponent() { const { theme, toggleTheme } = useContext(ThemeContext); const styles = { backgroundColor: theme === 'light' ? '#fff' : '#222', color: theme === 'light' ? '#000' : '#fff', padding: '1rem', textAlign: 'center', }; return ( <div style={styles}> <h1>{theme.toUpperCase()} MODE</h1> <button onClick={toggleTheme}>Toggle Theme</button> </div> ); } export default function App() { return ( <ThemeProvider> <ThemedComponent /> </ThemeProvider> ); } Penjelasan useContext:
- useContext(ThemeContext) digunakan untuk membaca nilai dari context.
- Menghindari prop drilling (tidak perlu oper prop theme dan toggleTheme ke banyak komponen secara manual).