Context API
Context API to mechanizm React do współdzielenia danych między komponentami bez przekazywania props przez każdy poziom drzewa (prop drilling). Klasyczne zastosowania: motyw (dark/light), język, dane zalogowanego użytkownika.
Context API
Context API to mechanizm React do współdzielenia danych między komponentami bez przekazywania props przez każdy poziom drzewa (prop drilling). Klasyczne zastosowania: motyw (dark/light), język, dane zalogowanego użytkownika.
Schemat
Drzewo komponentów: lewe drzewo z “czerwonymi strzałkami” prop drilling przez 4 poziomy. Prawe drzewo z Context Provider owijającym wszystko i jedną strzałką do konsumenta.
Przykład kodu JSX
ThemeContext — przełącznik dark/light mode dostępny w każdym komponencie bez props.
Forma: 10 slajdów, 10 minut
Ocena: 3.0Forma: 12-15 slajdów, 12 minut
Ocena: 4.0-5.0Forma: 15 slajdów + Q&A
Ocena: 5.0-6.0import { createContext, useContext, useState } from 'react';
// 1. Utwórz kontekstconst ThemeContext = createContext('light');
// 2. Provider owija aplikacjęfunction App() { const [theme, setTheme] = useState('light'); return ( <ThemeContext.Provider value={{ theme, setTheme }}> <Header /> <Main /> </ThemeContext.Provider> );}
// 3. Dowolny komponent w drzewie może odczytaćfunction ThemeToggle() { const { theme, setTheme } = useContext(ThemeContext); return ( <button onClick={() => setTheme(t => t === 'light' ? 'dark' : 'light')}> Motyw: {theme} </button> );}// ŹLE: theme wędruje przez każdy poziomfunction App() { const [theme] = useState('dark'); return <Header theme={theme} />;}function Header({ theme }) { return <Nav theme={theme} />; // Header nie używa theme, tylko przekazuje dalej!}function Nav({ theme }) { return <Button theme={theme} />; // Nav też nie używa!}function Button({ theme }) { return <button className={theme}>Klik</button>; // Dopiero tu jest potrzebne}Wizualizacja prop drilling
Narysujcie drzewo z “kanałem telefonicznym” przez każdy poziom — słuchawka tylko na początku i końcu, ale kabel przez każde piętro. Context to “WiFi” — sygnał wszędzie bez kabli.
Ostrzeżenie o wydajności
Podkreślcie: Context to NIE Redux. Każda zmiana wartości Providera = re-render wszystkich konsumentów. Nie wrzucajcie wszystkiego do jednego kontekstu!
Context = globalny stan bez bólu!
Context API to jedno z najczęściej używanych narzędzi w projektach React. Po tej prezentacji klasa będzie wiedzieć jak uniknąć prop drillingu we własnym projekcie!