React Academy · Les

useImperativeHandle: aangepaste instantie-waarden

Gebruik useImperativeHandle om precies te bepalen wat een parent ziet wanneer deze een ref naar uw component bevat.

Les 2 van 412 stappen

useImperativeHandle: aangepaste instantie-waarden is een gratis React Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.

De standaarddoorgestuurde ref

Wanneer je een ref rechtstreeks naar een DOM-element doorstuurt, ontvangt de ouder dat onbewerkte DOM-knooppunt en krijgt hij toegang tot elke ingebouwde methode en eigenschap ervan. Dat is vaak een groter oppervlak dan je beschikbaar wilt maken.

Soms geef je de ouder liever een klein, zorgvuldig samengesteld object dan het volledige DOM-knooppunt, zodat de openbare API van je component bewust beperkt blijft.

useImperativeHandle vervangt de ref-waarde

Met useImperativeHandle kun je de waarde aanpassen waarnaar de ref van de ouder verwijst. In plaats van het DOM-knooppunt ontvangt de ouder elk object dat je retourneert, zodat je precies bepaalt welke methoden en waarden beschikbaar worden gemaakt.

Zo verandert de doorgestuurde ref in een gedefinieerde imperatieve interface in plaats van een lekke doorgeefverbinding naar het onderliggende element.

De signatuur van de hook

De hook accepteert de doorgestuurde ref als eerste argument en een fabrieksfunctie als tweede. De fabriek retourneert het handvatobject dat in de oudercomponent ref.current wordt.

Je roept de hook aan als useImperativeHandle(ref, () => ({ ... })) en bouwt in de fabriek het object met de methoden en waarden die je vanuit de fabriek beschikbaar wilt maken.

Alleen focus() en clear() beschikbaar maken

Een veelgebruikt patroon is een aangepast invoerveld dat alleen focus en clear beschikbaar maakt. In de fabriek retourneer je een object met die twee methoden, die elk werken op een interne ref naar het echte invoerveld.

De ouder kan het veld nu focus geven of leegmaken, maar kan het onbewerkte value-attribuut niet uitlezen en ook geen willekeurig DOM-gedrag activeren, waardoor het gebruik voorspelbaar blijft.

open() en close() van een Modal beschikbaar maken

Imperatieve handvatten passen goed bij dialoogvensters. Een Modal-component kan open- en close-methoden beschikbaar maken die de interne zichtbaarheidsstatus omschakelen, zodat een ouder de component imperatief kan besturen zonder zelf de open-boolean te beheren.

Dit is handig voor code die vanuit veel plaatsen een dialoogvenster moet openen, bijvoorbeeld om een bevestiging te tonen nadat een asynchrone actie is voltooid.

Een beperkt API-oppervlak is goed ontwerp

Door alleen de methoden terug te geven die je wilt ondersteunen, creëer je een duidelijk contract. Gebruikers zijn afhankelijk van een kleine, gedocumenteerde set bewerkingen in plaats van de uitgebreide DOM-API, waardoor toekomstige herstructureringen veiliger worden.

Een beperkt imperatief oppervlak is gemakkelijker te testen en te begrijpen, en zal veel minder snel breken wanneer je de interne implementatie wijzigt.

De afhankelijkheidsarray

useImperativeHandle accepteert een optioneel derde argument: een afhankelijkheidsarray. Wanneer een afhankelijkheid verandert, wordt de fabriek opnieuw uitgevoerd en wordt het handvatobject opnieuw gemaakt, vergelijkbaar met de werking van useMemo en useEffect.

Als de methoden die je beschikbaar maakt waarden vastleggen die kunnen veranderen, vermeld je die waarden als afhankelijkheden, zodat de ouder altijd een handvat ontvangt dat aan de actuele toestand is gebonden.

Altijd gecombineerd met forwardRef

useImperativeHandle is alleen zinvol in een component die met forwardRef is verpakt, omdat de hook de doorgestuurde ref nodig heeft om het aangepaste handvat eraan te koppelen. Op zichzelf zou er geen ref van de ouder zijn om te vullen.

Daarom gebruik je ze samen: forwardRef brengt de ref binnen en useImperativeHandle bepaalt waarnaar die ref uiteindelijk verwijst.

Imperatieve handvatten testen

Om een handvat te testen, render je de component met een ref. Vervolgens roep je methoden aan via ref.current binnen een act-blok en controleer je het resulterende gedrag of de DOM-wijzigingen.

Omdat het beschikbare oppervlak klein en expliciet is, zijn deze tests gericht: ze controleren of elke gedocumenteerde methode doet wat het contract belooft, in plaats van interne details te onderzoeken.

Het handvat typeren met TypeScript

In TypeScript definieer je een interface die het handvat beschrijft, bijvoorbeeld een interface met focus- en clear-methoden. Vervolgens gebruik je die interface om zowel het generieke typeargument van forwardRef als de ref die de ouder bijhoudt te typeren.

Dit biedt automatisch aanvullen en controles tijdens het compileren op de aanroepplaats, zodat gebruikers precies zien welke methoden bestaan en verkeerd gebruik al vóór runtime wordt ontdekt.

Korte controle: het doel van useImperativeHandle

Ga na waarvoor useImperativeHandle werkelijk dient.

Samenvatting: useImperativeHandle

useImperativeHandle bepaalt wat een doorgestuurde ref beschikbaar maakt. De hook ontvangt de ref plus een fabriek die een handvatobject retourneert. Je gebruikt hem om een kleine API beschikbaar te maken, zoals focus en clear, of open en close op een dialoogvenster.

De hook wordt altijd gecombineerd met forwardRef, ondersteunt een afhankelijkheidsarray om het handvat te vernieuwen en werkt goed samen met TypeScript-interfaces en gerichte tests. Een beperkt oppervlak is een bewuste keuze en goed ontwerp.

Gratis beginnen

Leer React met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
88
Lessen
324

Veelgestelde vragen

Is de les “useImperativeHandle: aangepaste instantie-waarden” gratis?

Ja — de volledige tekst van “useImperativeHandle: aangepaste instantie-waarden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.

Wat leer ik in “useImperativeHandle: aangepaste instantie-waarden”?

Gebruik useImperativeHandle om precies te bepalen wat een parent ziet wanneer deze een ref naar uw component bevat. Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met React Academy te beginnen?

Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “useImperativeHandle: aangepaste instantie-waarden”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over React Academy?

Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. forwardRef: DOM-refs beschikbaar maken voor parents
  2. useImperativeHandle: aangepaste instantie-waarden
  3. Een imperative component-API bouwen
  4. Wanneer gebruikt u imperative versus declarative API's
← Terug naar React Academy