Fetch API i dane asynchroniczne
Fetch API to wbudowany w przeglądarkę interfejs do wykonywania zapytań HTTP. W React łączymy go z useEffect i async/await do pobierania danych z serwera. Kluczowe: obsługa stanów loading, error i data.
Fetch API i dane asynchroniczne
Fetch API to wbudowany w przeglądarkę interfejs do wykonywania zapytań HTTP. W React łączymy go z useEffect i async/await do pobierania danych z serwera. Kluczowe: obsługa stanów loading, error i data.
response.ok + response.json()loading, error, data — wzorzec obsługiSchemat
Diagram sekwencji: Komponent renderuje → useEffect → fetch request → serwer → response → setState(data) → re-render z danymi. Pokaż oddzielnie ścieżkę błędu.
Przykład kodu JSX
Komponent listy użytkowników z pełną obsługą loading/error/data i przyciskiem “Odśwież”.
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.0function UserList() { const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null);
useEffect(() => { const controller = new AbortController();
async function loadUsers() { try { const response = await fetch('https://jsonplaceholder.typicode.com/users', { signal: controller.signal, });
if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }
const data = await response.json(); setUsers(data); } catch (err) { if (err.name !== 'AbortError') { setError(err.message); } } finally { setLoading(false); } }
loadUsers(); return () => controller.abort(); }, []);
if (loading) return <p>Ładowanie użytkowników...</p>; if (error) return <p>Błąd: {error}</p>;
return ( <ul> {users.map(user => ( <li key={user.id}>{user.name} — {user.email}</li> ))} </ul> );}async function createUser(userData) { const response = await fetch('/api/users', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(userData), });
if (!response.ok) { throw new Error('Nie udało się utworzyć użytkownika'); }
return response.json();}Użyj JSONPlaceholder
Demonstrując fetch, użyjcie https://jsonplaceholder.typicode.com/users — publiczne API, zawsze dostępne, zwraca sensowne dane.
Pokaż DevTools Network
Otwórzcie DevTools → Network podczas demonstracji. Klasa zobaczy request i response “na żywo” — to świetny efekt wizualny.
Fetch to łącznik z serwerem!
Bez pobierania danych aplikacja React żyje w izolacji. Ten temat jest niezbędny w każdym projekcie z backendem!