Props und children; Event-Handler; Refs
Definieren Sie typisierte Props und children, verbinden Sie Event-Handler sicher und erstellen und verwenden Sie Refs für den Zugriff auf DOM-Knoten.
Props und children; Event-Handler; Refs ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Einführung
Ziel: Erstellen Sie typisierte React-Komponenten: Definieren Sie Props (einschließlich children), versehen Sie Event-Handler mit präzisen Typen und fokussieren Sie ein Eingabefeld mithilfe von Refs.
- Typisierte Props-Interfaces
- Typen für Event-Handler
- Refs für den DOM-Zugriff
Typisierte Props
Definieren Sie ein Props-Interface; verwenden Sie optionale Props und schränken Sie sie mithilfe von Union-Literalen ein. Belassen Sie Standardwerte innerhalb der Komponente.
import React from "react"
interface BadgeProps {
text: string
color?: "primary" | "success" | "warning"
}
export function Badge({ text, color = "primary" }: BadgeProps) {
const bg = color === "success" ? "#16a34a" : color === "warning" ? "#d97706" : "#2563eb"
return <span style={{ backgroundColor: bg, color: "white", padding: 4, borderRadius: 6 }}>{text}</span>
}
export default function App() {
return (
<div style={{ display: "grid", gap: 8 }}>
<Badge text="Saved" color="success" />
<Badge text="Warn" color="warning" />
</div>
)
}Children
Verwenden Sie PropsWithChildren<T> (oder React.PropsWithChildren), um Ihren Props einen typisierten children-Slot hinzuzufügen.
import React, { PropsWithChildren } from "react"
type CardProps = PropsWithChildren<{ title: string }>
function Card({ title, children }: CardProps) {
return (
<div style={{ border: "1px solid #e5e7eb", padding: 12, borderRadius: 8 }}>
<h3 style={{ margin: 0 }}>{title}</h3>
<div>{children}</div>
</div>
)
}
export default function App() {
return (
<Card title="Dashboard">
<p>Children are typed automatically.</p>
</Card>
)
}Event-Handler
Bevorzugen Sie React.MouseEvent<Element> und React.ChangeEvent<HTMLInputElement>. Sie stellen typisierte Eigenschaften für target/currentTarget bereit.
import React from "react"
export default function App() {
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {
console.log("clicked", e.currentTarget.name)
}
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
console.log("value", e.target.value)
}
return (
<div style={{ display: "grid", gap: 8 }}>
<input name="n" onChange={handleChange} placeholder="Type here" />
<button name="ok" onClick={handleClick}>Confirm</button>
</div>
)
}Refs: DOM-Zugriff
useRef<HTMLInputElement>(null) hält eine möglicherweise nullende Ref vor; verwenden Sie optionales Chaining, um sicher auf den DOM-Knoten zuzugreifen.
import React, { useRef } from "react"
export default function App() {
const inputRef = useRef<HTMLInputElement>(null)
const focusInput = () => {
inputRef.current?.focus()
}
return (
<div style={{ display: "grid", gap: 8 }}>
<input ref={inputRef} placeholder="Focus me" />
<button onClick={focusInput}>Focus</button>
</div>
)
}Refs weiterleiten
Mit forwardRef können Elternkomponenten auf einen DOM-Knoten der Kindkomponente zugreifen. Geben Sie den Elementtyp an, um eine präzise Typisierung zu erhalten.
import React, { forwardRef } from "react"
type TextInputProps = { label: string }
const TextInput = forwardRef<HTMLInputElement, TextInputProps>(function TextInput({ label }, ref) {
return (
<label style={{ display: "grid", gap: 4 }}>
<span>{label}</span>
<input ref={ref} />
</label>
)
})
export default function App() {
const setRef = (el: HTMLInputElement | null) => { if (el) el.focus() }
return <TextInput ref={setRef} label="Auto focus" />
}Prüfung der Event-Typisierung
Schnelltest: Welcher Typ ist für einen Click-Handler eines Buttons korrekt?
Zusammenfassung
Zusammenfassung: Definieren Sie Props (einschließlich children), typisieren Sie Ihre Events präzise und verwenden Sie Refs (einschließlich forwardRef), um sicher auf DOM-Knoten zuzugreifen.
Lerne TypeScript mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 101
- Lektionen
- 352
Häufig gestellte Fragen
Ist die Lektion „Props und children; Event-Handler; Refs“ kostenlos?
Ja — der vollständige Text von „Props und children; Event-Handler; Refs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Props und children; Event-Handler; Refs“?
Definieren Sie typisierte Props und children, verbinden Sie Event-Handler sicher und erstellen und verwenden Sie Refs für den Zugriff auf DOM-Knoten. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um TypeScript Academy zu starten?
Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.
Wie lange dauert die Lektion „Props und children; Event-Handler; Refs“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Props und children; Event-Handler; Refs
- State und Reducer; Context-Typisierung
- Komponenten-Generics – Einführung