Vad är useEffect?
- En hook i React för att hantera sidoeffekter i funktionella komponenter
- Används för att utföra operationer som datahämtning, prenumerationer och manuella DOM-ändringar
Användningsfall
- Datahämtning
- Lyssna på events
- Uppdatera DOM
- Städa upp
Grundläggande Syntax
useEffect(() => {
// Koden som ska köras
}, [dependencies]);
Dependency array
- En lista med variabler som useEffect ska lyssna på
- Om en variabel i arrayen uppdateras körs koden i useEffect
- Om arrayen är tom körs koden endast när komponenten renderas första gången
Exempel, användningsfall
- Datahämtning
- setInterval / setTimer
- Eventlyssnare
Exempel, datahämtning
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
const response = await fetch('https://example.com');
const data = await response.json();
setData(data);
};
fetchData();
}, []);
Exempel, setInterval
const [count, setCount] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setCount(count => count + 1);
}, 1000);
// Uppstädning körs när komponenten unmountas
// eller när dependencies ändras
return () => clearInterval(interval);
}, []);
Exempel, eventlyssnare
const [width, setWidth] = useState(window.innerWidth);
useEffect(() => {
const handleResize = () => setWidth(window.innerWidth);
window.addEventListener('resize', handleResize);
// Uppstädning körs när komponenten unmountas
// eller när dependencies ändras
return () => window.removeEventListener('resize', handleResize);
}, []);