Events en refs typen in TypeScript
Gebruik de generieke typen React.ChangeEvent, React.MouseEvent en RefObject voor DOM-interacties.
Events en refs typen in TypeScript 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.
Synthetische React-gebeurtenissen
React verpakt oorspronkelijke DOM-gebeurtenissen in SyntheticEvent. Elk gebeurtenistype heeft een specifieke generieke typeparameter: React.ChangeEvent<HTMLInputElement>, React.MouseEvent<HTMLButtonElement> enzovoort.
onChange typen
De meest voorkomende gebeurtenis is onChange op invoervelden. Geef de afhandelaar ervan het type React.ChangeEvent<HTMLInputElement>.
function SearchInput() {
const [value, setValue] = useState('');
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setValue(e.target.value);
};
return <input value={value} onChange={handleChange} />;
}onClick typen
Voor klikken op knoppen gebruik je React.MouseEvent<HTMLButtonElement>. Met volledige typering krijg je veilig toegang tot e.currentTarget, e.preventDefault() en e.stopPropagation().
function DeleteButton({ onDelete }: { onDelete: () => void }) {
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {
e.stopPropagation();
onDelete();
};
return <button onClick={handleClick}>Delete</button>;
}onSubmit typen
Formulierverzending gebruikt React.FormEvent<HTMLFormElement>. Roep altijd e.preventDefault() aan om de standaardnavigatie van de browser te stoppen.
function LoginForm() {
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
const form = e.currentTarget;
const email = (form.elements.namedItem('email') as HTMLInputElement).value;
console.log(email);
};
return (
<form onSubmit={handleSubmit}>
<input name="email" />
<button type="submit">Login</button>
</form>
);
}Toetsenbordgebeurtenissen typen
Gebruik React.KeyboardEvent<HTMLElement> om toetsenbordafhandelaars van een type te voorzien. Zo krijg je veilig toegang tot e.key, e.code en e.ctrlKey.
function CommandInput() {
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.key === 'Enter' && e.metaKey) {
submitCommand();
}
};
return <input onKeyDown={handleKeyDown} />;
}useRef voor DOM-elementen
Geef het type van het HTML-element als generieke typeparameter aan useRef en initialiseer het met null. TypeScript weet dan dat de ref dat elementtype bevat.
function AutoFocusInput() {
const inputRef = useRef<HTMLInputElement>(null);
useEffect(() => {
inputRef.current?.focus();
}, []);
return <input ref={inputRef} />;
}Mutabele ref versus DOM-ref
Wanneer je een veranderlijke waarde opslaat, geen DOM-knooppunt, initialiseer je useRef met een waarde in plaats van null. TypeScript leidt dan een mutabele MutableRefObject af.
// DOM ref (read-only current)
const divRef = useRef<HTMLDivElement>(null);
// Mutable ref (read-write current)
const countRef = useRef<number>(0);
countRef.current += 1; // ✓ no TypeScript erroruseImperativeHandle typen
Wanneer je een ref-API vanuit een onderliggende component beschikbaar maakt, definieer je een interface voor de handle en gebruik je die zowel in forwardRef als in useImperativeHandle.
interface DialogHandle {
open: () => void;
close: () => void;
}
const Dialog = forwardRef<DialogHandle, { title: string }>((props, ref) => {
useImperativeHandle(ref, () => ({
open: () => console.log('open'),
close: () => console.log('close'),
}));
return <div>{props.title}</div>;
});Ref-callbacks
Een ref-callback ontvangt het DOM-element of null. Geef de callback het type (node: HTMLElement | null) => void.
function MeasureDiv() {
const [height, setHeight] = useState(0);
const measuredRef = (node: HTMLDivElement | null) => {
if (node) setHeight(node.getBoundingClientRect().height);
};
return <div ref={measuredRef}>Content: {height}px tall</div>;
}target versus currentTarget bij gebeurtenissen
e.target is het element dat de gebeurtenis heeft veroorzaakt; e.currentTarget is het element waaraan de afhandelaar is gekoppeld. Converteer e.target wanneer je specifieke eigenschappen nodig hebt.
const handleClick = (e: React.MouseEvent<HTMLUListElement>) => {
const target = e.target as HTMLLIElement;
console.log(target.dataset.id);
};Generiek type voor gebeurtenisafhandelaars
Gebruik voor herbruikbare functies voor gebeurtenisafhandeling het generieke type React.EventHandler<Event> of schrijf de volledige functiesignatuur rechtstreeks in de functie.
type InputChangeHandler = React.ChangeEventHandler<HTMLInputElement>;
const logChange: InputChangeHandler = (e) => {
console.log(e.target.value); // e is fully typed
};Korte controle
Welk TypeScript-type gebruik je voor een useRef die een HTMLInputElement bevat?
Samenvatting
Geef gebeurtenisafhandelaars een type met de generieke typen React.ChangeEvent, React.MouseEvent en React.FormEvent. Geef DOM-ref's een type met useRef<HTMLElement>(null) en mutabele ref's met het waardetype. Gebruik forwardRef met een expliciete handle-interface voor imperatieve API's.
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 “Events en refs typen in TypeScript” gratis?
Ja — de volledige tekst van “Events en refs typen in TypeScript” 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 “Events en refs typen in TypeScript”?
Gebruik de generieke typen React.ChangeEvent, React.MouseEvent en RefObject voor DOM-interacties. 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 “Events en refs typen in TypeScript”?
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
- Props en returntypen van componenten typen
- Events en refs typen in TypeScript
- Generieke componenten en utilitytypen
- Context en Custom Hooks typen