Sobes.tech
Junior

Waarom wordt een afhankelijkhedenlijst in React aangegeven?

sobes.tech AI

Antwoord van AI

De afhankelijkheidsarray (dependency array) in React-hooks (bijvoorbeeld useEffect, useMemo, useCallback) geeft aan van welke waarden de uitvoering van het effect of de gememoriseerde functie afhankelijk is.

Het gebruik ervan maakt het mogelijk:

  1. Prestaties optimaliseren: React voert het effect opnieuw uit of berekent de waarde alleen wanneer een van de waarden in de afhankelijkheidsarray sinds de laatste rendering is gewijzigd. Dit voorkomt onnodige berekeningen en updates.
  2. Eindeloze cycli voorkomen: Zonder afhankelijkheidsarray of met verkeerd gespecificeerde afhankelijkheden kan het effect bij elke rendering worden uitgevoerd, wat een statusupdate veroorzaakt die op zijn beurt een nieuwe rendering uitlokt, waardoor een oneindige lus ontstaat. Het specificeren van afhankelijkheden zorgt ervoor dat het effect alleen wordt uitgevoerd wanneer dat echt nodig is.
  3. Controle over de levenscyclus van het effect:
    • Een lege array [] betekent dat het effect slechts één keer wordt uitgevoerd na de eerste rendering (vergelijkbaar met componentDidMount). Het wordt niet opnieuw uitgevoerd bij latere renderings, zelfs als de status of props van het component veranderen.
    • Het ontbreken van een afhankelijkheidsarray (of undefined) betekent dat het effect bij elke rendering van het component wordt uitgevoerd.

Voorbeeld met useEffect:

// Het effect wordt slechts één keer uitgevoerd na de eerste rendering
useEffect(() => {
  console.log('Component gemonteerd');
}, []);

// Het effect wordt uitgevoerd bij de eerste rendering en bij verandering van `count`
useEffect(() => {
  console.log('Waarde van count is veranderd:', count);
}, [count]);

// Het effect wordt bij elke rendering uitgevoerd
useEffect(() => {
  console.log('Rendering uitgevoerd');
});

Voorbeeld met useMemo:

// De waarde `expensiveResult` wordt alleen opnieuw berekend bij verandering van `a` of `b`
const expensiveResult = useMemo(() => {
  console.log('Herberekenen...');
  return a * b;
}, [a, b]);

Voorbeeld met useCallback:

// De functie `handleClick` wordt alleen opnieuw gemaakt bij verandering van `id`
const handleClick = useCallback(() => {
  console.log('Klik op element met id:', id);
}, [id]);

Het correct specificeren van de afhankelijkheidsarray is cruciaal voor het juiste functioneren van hooks en de prestaties van React-toepassingen.