Zarządzanie stanem (state management) to jeden z najważniejszych elementów tworzenia aplikacji w React. Każda interaktywna aplikacja internetowa wymaga zarządzania danymi, które mogą zmieniać się w czasie. W tym artykule pokażemy Ci, jak efektywnie pracować ze stanem w aplikacjach React – od podstaw po zaawansowane techniki.
Stan w React to dane, które mogą zmieniać się w trakcie życia komponentu. React umożliwia zarządzanie stanem zarówno na poziomie pojedynczych komponentów, jak i w ujęciu globalnym.
Efektywne zarządzanie stanem pozwala na:
Najprostszym sposobem zarządzania stanem jest użycie useState
, który przechowuje dane bezpośrednio w komponencie.
import { useState } from "react"; function Licznik() { const [liczba, setLiczba] = useState(0); return ( <div> <p>Liczba kliknięć: {liczba}</p> <button onClick={() => setLiczba(liczba + 1)}>Kliknij</button> </div> ); }
Wyjaśnienie:
useState
definiuje zmienną stanu liczba
oraz funkcję setLiczba
do jej aktualizacji.liczba
o 1.Gdy stan aplikacji jest bardziej złożony, zaleca się użycie useReducer
, który działa podobnie do Redux.
import { useReducer } from "react"; const reducer = (state, action) => { switch (action.type) { case "increment": return { count: state.count + 1 }; case "decrement": return { count: state.count - 1 }; default: return state; } }; function Licznik() { const [state, dispatch] = useReducer(reducer, { count: 0 }); return ( <div> <p>Liczba: {state.count}</p> <button onClick={() => dispatch({ type: "increment" })}>+1</button> <button onClick={() => dispatch({ type: "decrement" })}>-1</button> </div> ); }
Kiedy używać useReducer
?
Jeśli potrzebujesz zarządzać stanem pomiędzy wieloma komponentami, możesz użyć React Context API. Context pozwala udostępniać dane bez konieczności przekazywania ich przez propsy.
import { createContext, useState, useContext } from "react"; const TematContext = createContext(); function TematProvider({ children }) { const [temat, setTemat] = useState("jasny"); return ( <TematContext.Provider value={{ temat, setTemat }}> {children} </TematContext.Provider> ); } function Przycisk() { const { temat, setTemat } = useContext(TematContext); return ( <button onClick={() => setTemat(temat === "jasny" ? "ciemny" : "jasny")}> Zmień motyw </button> ); } function App() { return ( <TematProvider> <Przycisk /> </TematProvider> ); }
Dla dużych aplikacji warto skorzystać z Redux, który centralizuje zarządzanie stanem.
useState
, a kiedy useReducer
?Gdy masz prosty stan – użyj useState
. Gdy stan jest bardziej złożony – sięgnij po useReducer
.
Nie. Dla mniejszych aplikacji wystarczy useContext
lub useState
.
Używaj useMemo
i useCallback
dla optymalizacji wydajności.
Jeśli interesuje Cię stacjonarny lub online kurs programowania, sprawdź naszą ofertę na stronie www.like-it.sk. Nasze kursy prowadzą doświadczeni specjaliści, którzy pomogą Ci opanować podstawy i zaawansowane koncepcje programowania.
Marián Knězek