Was sind die Typdefinitionen für React Hooks in TypeScript?

Dec 15, 2025Eine Nachricht hinterlassen

Hallo! Als Hooks-Anbieter habe ich in letzter Zeit viele Fragen zu den Typdefinitionen für React Hooks in TypeScript erhalten. Also dachte ich, ich setze mich hin und schreibe einen Blogbeitrag, um mein Wissen zu teilen.

Lassen Sie uns zunächst darüber sprechen, warum Typdefinitionen bei der Arbeit mit React Hooks in TypeScript so wichtig sind. TypeScript ist eine typisierte Obermenge von JavaScript, die der Sprache statische Typisierung hinzufügt. Dies bedeutet, dass Sie Fehler frühzeitig im Entwicklungsprozess erkennen können, indem Sie die Typen von Variablen, Funktionsparametern und Rückgabewerten explizit definieren. Wenn Sie React Hooks verwenden, eine relativ neue und leistungsstarke Funktion in React, können geeignete Typdefinitionen Ihren Code robuster, leichter verständlich und weniger fehleranfällig machen.

useState Hook

Beginnen wir mit demuseStateHook, einer der am häufigsten verwendeten Hooks in React. DeruseStateMit dem Hook können Sie einer Funktionskomponente einen Status hinzufügen. So können Sie die Typen definierenuseStatein TypeScript:

import React, { useState } from 'react'; // Definiere den Typ des Zustandstyps CounterState = number; const Counter: React.FC = () => { // Den definierten Typ für den Zustand verwenden const [count, setCount] = useState<CounterState>(0); const increment = () => { setCount(count + 1); }; return ( <div> <p>Count: {count}</p> <button onClick={increment}>Inkrementieren</button> </div> ); }; Standardzähler exportieren;

In diesem Beispiel definieren wir zunächst einen TypCounterStateDies stellt den Typ des Zustands dar, den wir verwenden möchten. Dann, wenn Sie anrufenuseStateHook geben wir den Typparameter an<CounterState>. Dies teilt TypeScript mit, dass diezählenVariable wird vom Typ seinNummer, und diesetCountFunktion akzeptiert aNummerals Argument.

useEffect Hook

DeruseEffectHook wird verwendet, um Nebenwirkungen in Funktionskomponenten auszuführen. Bei der VerwendunguseEffectIn TypeScript müssen Sie keine Typdefinitionen für den Hook selbst angeben. Möglicherweise müssen Sie jedoch die Typen für die darin verwendeten Variablen und Funktionen definierenuseEffectRückruf.

import React, { useState, useEffect } from 'react'; type Data = { name: string; Alter: Anzahl; }; const DataFetcher: React.FC = () => { const [data, setData] = useState<Data | null>(null); useEffect(() => { const fetchData = async () => { const Response =wait fetch('https://example.com/api/data'); const result: Data = waiting Response.json(); setData(result); }; fetchData(); }, []); if (!data) { return <p>Loading...</p>; } return ( <div> <p>Name: {data.name}</p> <p>Alter: {data.age}</p> </div> ); }; Standard-DataFetcher exportieren;

In diesem Beispiel definieren wir einen TypDatenDies stellt die Form der Daten dar, die wir voraussichtlich abrufen werden. Wir verwenden diesen Typ bei der Definition des ZustandsDatenmit deruseStateHaken. Im InnerenuseEffectRückruf, wir verwenden auch dieDatenTyp, um den Typ des anzugebenErgebnisVariable beim Parsen der JSON-Antwort.

useContext Hook

DeruseContextHook wird verwendet, um auf den Kontext in einer Funktionskomponente zuzugreifen. Bei der VerwendunguseContextIn TypeScript müssen Sie den Typ des Kontexts definieren.

import React, { createContext, useContext } from 'react'; // Definiere den Typ des Kontextwerttyps ThemeContextType = 'light' | 'dunkel'; // Den Kontext mit dem definierten Typ erstellen const ThemeContext = createContext<ThemeContextType>('light'); const ThemeProvider = ThemeContext.Provider; const ThemeDisplay: React.FC = () => { const theme = useContext(ThemeContext); return <p>Aktuelles Thema: {theme}</p>; }; const App: React.FC = () => { return ( <ThemeProvider value="dark"> <ThemeDisplay /> </ThemeProvider> ); }; Standard-App exportieren;

In diesem Beispiel definieren wir zunächst einen TypThemeContextTypewas die möglichen Werte des Kontexts darstellt. Dann beim Erstellen des Kontexts mitcreateContext, geben wir den Typparameter an<ThemeContextType>. Dadurch wird sichergestellt, dass der Wert, der dem zur Verfügung gestellt wird, gewährleistet istThemeProviderund der Wert, auf den zugegriffen wirduseContextsind vom richtigen Typ.

0153_10154_1

Verwenden Sie den Reduzierhaken

DeruseReducerHook ist eine Alternative zuuseStatezur Verwaltung komplexerer Zustandslogiken. Bei der VerwendunguseReducerIn TypeScript müssen Sie die Typen für den Zustand, die Aktion und die Reduzierfunktion definieren.

import React, { useReducer } from 'react'; // Definiere den Typ des Zustandstyps CounterState = { count: number; }; // Definiere den Typ des Aktionstyps CounterAction = | { Typ: 'Inkrement' } | { Typ: 'dekrementieren' }; // Definiere die Reduzierfunktion mit Typen const counterReducer = ( state: CounterState, action: CounterAction ): CounterState => { switch (action.type) { case 'increment': return { count: state.count + 1 }; case 'decrement': return { count: state.count - 1 }; Standard: Rückgabestatus; } }; const Counter: React.FC = () => { const [State, Dispatch] = useReducer(counterReducer, { count: 0 }); return ( <div> <p>Count: {state.count})}>Dispatch({ type: 'increment' })}>Inkrementieren</button> <button onClick={() => failed({ type: 'decrement' })}>Dekrementieren</button> ); }; Standardzähler exportieren;

In diesem Beispiel definieren wir einen TypCounterStatewas die Form des Staates darstellt, und einen TypGegenwirkungDies stellt die möglichen Aktionen dar, die ausgelöst werden können. DercounterReducerDie Funktion verwendet den aktuellen Status und eine Aktion als Argumente und gibt einen neuen Status zurück. Durch die Definition dieser Typen stellen wir sicher, dass dieuseReducerHook und die damit interagierenden Funktionen verwenden die richtigen Typen.

Benutzerdefinierte Hooks und Typdefinitionen

Beim Erstellen benutzerdefinierter Hooks in TypeScript ist es auch wichtig, die entsprechenden Typdefinitionen zu definieren. Nehmen wir an, wir haben einen benutzerdefinierten Hook zur Verarbeitung von Formulareingaben:

import React, { useState } from 'react'; // Definiere den Typ des Formulars input type FormInput = { value: string; Fehler: Zeichenfolge | null; }; // Definiere den benutzerdefinierten Hook mit den Typen const useFormInput = (initialValue: string): FormInput => { const [value, setValue] = useState(initialValue); const [error, setError] = useState<string | null>(null); const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { setValue(e.target.value); if (e.target.value.length < 3) { setError('Die Eingabe muss mindestens 3 Zeichen lang sein'); } else { setError(null); } }; return { value, error }; }; const Form: React.FC = () => { const { value, error } = useFormInput(''); return ( <form> <input type="text" value={value} onChange={handleChange} /> {error && <p style={{ color: 'red' }}>{error}</p>} <button type="submit">Submit</button> </form> ); }; Standardformular exportieren;

In diesem Beispiel definieren wir einen TypFormInputDies stellt die Form der vom benutzerdefinierten Hook zurückgegebenen Daten dar. Der benutzerdefinierte HakenuseFormInputnimmt einen Anfangswert als Argument und gibt ein Objekt vom Typ zurückFormInput. Dadurch wird sichergestellt, dass die Komponente, die den benutzerdefinierten Hook verwendet, die zurückgegebenen Daten ordnungsgemäß verarbeiten kann.

Abschluss

Zusammenfassend lässt sich sagen, dass die Verwendung geeigneter Typdefinitionen für React Hooks in TypeScript für das Schreiben von sauberem, wartbarem und fehlerfreiem Code unerlässlich ist. Egal, ob Sie integrierte Haken verwenden, zuseState,useEffect,useContext,useReducerWenn Sie sich die Zeit nehmen, die richtigen Typen zu definieren, oder wenn Sie Ihre eigenen benutzerdefinierten Hooks erstellen, können Sie sich auf lange Sicht viel Kopfzerbrechen ersparen.

Als Hakenlieferant weiß ich, wie wichtig es ist, qualitativ hochwertige und zuverlässige Produkte bereitzustellen. Wir bieten eine große Auswahl an Haken für die Ausrüstung Ihres Supermarkts, darunterStecktafelhakenUndLamellenwandhaken. Diese Haken sind langlebig, funktional und einfach zu installieren, was sie zu einer guten Wahl für jeden Supermarkt oder Einzelhandelsgeschäft macht.

Wenn Sie mehr über unsere Hooks erfahren möchten oder Fragen zu den Typdefinitionen für React Hooks in TypeScript haben, können Sie sich gerne für ein freundliches Gespräch und ein Beschaffungsgespräch an uns wenden.

Referenzen

  • Reagieren Sie auf die offizielle Dokumentation
  • Offizielle Dokumentation zu TypeScript