Zum Inhalt springen
    WingoUI
    KomponentenVorlagenDokuPreiseKI-AgentenBlogChangelog
    1. Startseite
    2. Blog
    3. Komponenten-Guides
    4. React Rating Stars: Halbe Sterne, Hover und Tastatur
    Read in English
    1. Blog
    2. Komponenten-Guides
    3. React Rating Stars: Halbe Sterne, Hover und Tastatur
    Komponenten-Guides
    Komponenten-Guides

    React Rating Stars: Halbe Sterne, Hover und Tastatur

    SR
    Serban Rusu · Gründer von Wingo UI
    19. Okt. 2026 · 9 Min. Lesezeit

    Auf dieser Seite

    0%
    1. Was muss eine React Rating Komponente können?
    2. Wie unterscheiden sich die React Star Rating Pakete?
    3. Wie baue ich eine React Sternebewertung in ein Formular ein?
    4. Wie funktionieren halbe Sterne in React?
    5. Was bekommen Tastatur- und Screenreader-Nutzer?
    6. Wie funktioniert die Bewertung auf dem Smartphone?
    7. Wie zeige ich Bewertungssterne und die Übersicht dazu an?
      1. Wie erscheinen Bewertungssterne bei Google?
    8. Was sind die typischen Fehler bei Sternebewertungen?
    9. Wie füge ich es meinem Projekt hinzu?
    10. Häufige Fragen
      1. Wie baue ich eine Bewertung mit halben Sternen in React?
      2. Sollte eine Sternebewertung eine Radio Group oder ein Slider sein?
      3. Wie zeige ich einen Durchschnitt wie 4,3 Sterne an?
      4. Kann Google meine Bewertungssterne in den Suchergebnissen zeigen?
      5. Ist das Rating von Wingo UI kostenlos?

    Kurz gesagt

    Gute React Rating Stars brauchen über eine Reihe Icons hinaus vier Dinge: halbe Werte je nach Position des Zeigers, eine Hover-Vorschau, die zeigt, was ein Klick bewirkt, volle Bedienung per Tastatur mit gesprochenem Wert und ein Wischen per Finger mit 44px großen Zielen. Das Rating von Wingo UI deckt das mit allowHalf, labels und einem kontrollierten value ab, und die Reviews-Komponente macht aus den gespeicherten Bewertungen einen Durchschnitt, eine Verteilung von 5 bis 1 und eine filterbare Liste.

    Veröffentlicht am 19. Okt. 2026

    Du brauchst React Rating Stars für eine Produktbewertung, eine Händlerbewertung oder ein Feedback-Formular. Fünf Stern-Icons und ein Click-Handler sind in zehn Minuten fertig. Dann fragt jemand nach halben Sternen. Wer nur die Tastatur nutzt, springt per Tab auf die Reihe, und nichts bewegt sich. Auf dem Smartphone zieht jemand den Daumen über die Sterne, und statt der Bewertung scrollt die Seite. Und die Produktseite muss aus 126 Bewertungen immer noch einen Durchschnitt und eine Verteilung machen. Dieser Guide zeigt, was eine React Star Rating Komponente können muss, wie sich die gängigen Pakete unterscheiden, und baut komplette Beispiele mit Rating und Reviews von Wingo UI.

    Was muss eine React Rating Komponente können?

    Sechs Dinge. Fünf Icons mit einem Click-Handler erledigen nur das erste:

    1. Klicken oder Tippen zum Bewerten, mit einem Weg, die Bewertung wieder zu löschen.
    2. Halbe Werte, je nachdem, wo der Zeiger auf dem Stern landet.
    3. Eine Hover-Vorschau, damit Sterne und Label zeigen, was ein Klick auswählen wird, bevor er passiert.
    4. Bedienung per Tastatur mit einem Wert, den ein Screenreader vorlesen kann („Gut“, „3.5 of 5“).
    5. Ein Touch-Layout: Ziele von mindestens 44px und ein Wischen per Finger, das die Seite nicht scrollt.
    6. Ein schreibgeschützter Modus für Durchschnitte wie 4,3, gezeichnet als Bruchteil eines Sterns.

    Der letzte Punkt verbindet Eingabe und Ausgabe. Die Sterne, die Leute in einem Formular wählen, sind dieselben, die eine Produktseite neben dem Durchschnitt zeigt. Eine einzige Komponente sollte also beides können.

    Wie unterscheiden sich die React Star Rating Pakete?

    MUI Rating ist am vollständigsten, wenn du schon Material UI nutzt, die kleinen npm-Pakete reichen für eine schnelle Anzeige, und das Rating von Wingo UI ist eine Pro-Komponente als Quellcode, gebaut für Touch und Formulare. Die Fakten stammen aus der Doku, dem README und der npm Registry des jeweiligen Projekts, Stand Oktober 2026.

    OptionWas es istHalbe WerteTastatur und ScreenreaderZuletzt veröffentlicht
    MUI Rating (opens in a new tab)Teil von @mui/material (MIT)precision={0.5}Visuell versteckte Radio-Inputs, eins pro Stern plus 0; Pfeiltasten ändern den Wert@mui/material 9.5.0, Oktober 2026
    @smastrom/react-rating (opens in a new tab)Paket ohne Abhängigkeiten (MIT)Schreibgeschützte Kommazahlen, auf den nächsten halben Stern gezeichnetARIA Radio Group; Pfeiltasten bewegen, Enter oder Leertaste bestätigt1.5.0, Januar 2024
    react-rating-stars-component (opens in a new tab)Fork von react-stars (ISC)isHalf, standardmäßig anProp a11y, standardmäßig an: Pfeiltasten und Zifferntasten2.2.0, Juli 2020
    Wingo UI RatingPro-Komponente als Quellcode, npx wingo-ui@latest add ratingallowHalf, nach Position des Zeigers und in Tastenschritten von 0,5Ein Slider mit aria-valuetext, Pfeiltasten, Page-Tasten, Home, End und Ziffern; Wischen per Finger mit 44px großen ZielenTeil der Library

    Wenn deine App auf Material UI läuft, nimm MUI Rating: Es ist gut dokumentiert, und sein Beispiel mit Hover-Label (onChangeActive) deckt die Vorschau ab. Wenn du nur eine Bewertung anzeigst, reicht ein kleines Paket oder eine schreibgeschützte Komponente, wobei react-rating-stars-component seit 2020 nicht mehr veröffentlicht wurde. Der Rest dieses Guides dreht sich um das Rating von Wingo UI.

    Wie baue ich eine React Sternebewertung in ein Formular ein?

    Gib ihr ein label, einen kontrollierten value und einen name. Mit name schickt ein verstecktes Input-Feld den Wert mit, sodass ein normales Formular oder eine Server Action ihn wie jedes andere Feld liest: "0", wenn nichts gewählt ist, "4.5" mit halben Sternen.

    bash
    npx wingo-ui@latest add rating textarea button
    tsx
    "use client";
    import { useState } from "react";
    import { Button } from "@/components/ui/button";
    import { Rating } from "@/components/ui/rating";
    import { Textarea } from "@/components/ui/textarea";
    const LABELS = ["Sehr schlecht", "Schlecht", "Okay", "Gut", "Ausgezeichnet"];
    export function ReviewForm({ saveReview }: { saveReview: (data: FormData) => Promise<void> }) {
    const [rating, setRating] = useState(0);
    const [tried, setTried] = useState(false);
    return (
    <form
    noValidate
    className="flex flex-col gap-4"
    action={async (data) => {
    // das versteckte Input-Feld sendet "0", solange nichts gewählt ist
    if (Number(data.get("rating")) === 0) {
    setTried(true);
    return;
    }
    await saveReview(data);
    }}
    >
    <Rating
    label="Wie war deine Erfahrung?"
    name="rating"
    value={rating}
    onValueChange={(next) => {
    setRating(next);
    if (next > 0) setTried(false);
    }}
    labels={LABELS}
    showLabel
    emptyLabel="Tipp auf einen Stern"
    required
    error={tried && rating === 0 ? "Wähl eine Bewertung." : undefined}
    />
    <Textarea label="Kommentar" name="comment" maxLength={500} showCount minRows={2} />
    <Button type="submit">Bewertung senden</Button>
    </form>
    );
    }

    labels hat zwei Aufgaben: Mit showLabel steht neben den Sternen das Label des Werts unter dem Zeiger oder des gewählten Werts, und jedes Label ist der Text, den ein Screenreader für diesen Wert vorliest. required zeigt nur die Markierung hinter dem Label an, die Prüfung bleibt also wie oben in deinem Formular. error färbt die leeren Sterne rot und setzt aria-invalid. Label, Beschreibung und Fehler kommen aus der kostenlosen Field-Anatomie, die jedes Eingabefeld von Wingo UI nutzt.

    Fahr mit der Maus über die Sterne und klick dann einen an. Drück vorher einmal auf Send rating, ohne etwas zu wählen.

    Fahr über die Sterne, um eine Bewertung und ihr Label vorab zu sehen, klick auf einen Stern und drück dann auf Send rating. Ohne Bewertung erscheint der Fehler
    $ npx wingo-ui@latest add rating
    ProDoku: Rating

    Wie funktionieren halbe Sterne in React?

    Jeder Stern wird in der Mitte geteilt. Mit allowHalf ergibt ein Zeiger auf der linken Hälfte eines Sterns x,5 und auf der rechten Hälfte den ganzen Stern (gespiegelt auf Seiten mit Schreibrichtung von rechts nach links). Die Füllung ist dasselbe Icon, zweimal gezeichnet: eine leere Ebene mit geringer Deckkraft und eine farbige Ebene, auf einen Prozentwert zugeschnitten. Ein halber Stern ist also das volle Icon, zu 50% zugeschnitten. Deshalb funktioniert jedes lucide-Icon über die Prop icon, etwa <Heart />. Ein anderes Muster für halbe Sterne in React ist ein eigenes Halbstern-Symbol (react-rating-stars-component nimmt dafür eine Prop halfIcon); der Zuschnitt macht das überflüssig.

    tsx
    <Rating aria-label="Bewerte dieses Fahrrad" allowHalf tone="warning" showValue locale="de-DE" defaultValue={3.5} />

    tone="warning" ergibt die klassischen bernsteinfarbenen Sterne; das Standard-neutral ist im Light Mode schwarz und im Dark Mode weiß, und color nimmt jede CSS-Farbe. showValue gibt die Zahl über Intl aus („3.5“ in en-US, „3,5“ in de-DE) und reserviert die Breite der breitesten Zahl, sodass die Sterne nie verrutschen, während sich der Wert ändert.

    Die Hover-Vorschau folgt dem Zeiger. Der Teil der Vorschau, der über den gewählten Wert hinausgeht, erscheint blasser, damit du die aktuelle Bewertung und die, die ein Klick setzen würde, gleichzeitig siehst. Nach einem Klick wartet die Vorschau, bis die Maus einen anderen Wert erreicht, damit das Ergebnis nicht unter einem stillstehenden Cursor verschwindet.

    allowHalf mit bernsteinfarbenen Sternen: Fahr mit dem Zeiger über einen Stern, um den halben und den ganzen Wert zu sehen, und spring dann mit den Pfeiltasten in Schritten von 0,5
    $ npx wingo-ui@latest add rating
    ProDoku: Rating

    Was bekommen Tastatur- und Screenreader-Nutzer?

    Die Reihe ist ein einziger Tab-Stopp mit role="slider", aria-valuemin, aria-valuemax, aria-valuenow und aria-valuetext. Die Tasten:

    • Pfeil nach rechts oder oben erhöht um einen Schritt (0,5 mit allowHalf), Pfeil nach links oder unten verringert um einen. Auf Seiten mit Schreibrichtung von rechts nach links sind rechts und links vertauscht.
    • PageUp und PageDown springen um einen ganzen Stern.
    • Home löscht die Bewertung oder springt mit clearable={false} auf den niedrigsten Wert. End springt nach ganz oben.
    • Ziffern 1 bis 9 wählen einen Wert direkt. 0, Backspace und Delete löschen.

    Radio Groups sind das andere übliche Muster, und sie sind eine gute Wahl: MUI nutzt versteckte native Radios, @smastrom/react-rating eine ARIA Radio Group. Wir haben uns für einen Slider entschieden, weil halbe Schritte, Page-Tasten und Ziffern-Shortcuts auf einen einzigen Wert passen, und weil aria-valuetext jeden Wert als Wort ansagen kann. Ohne labels entscheidet getValueText, was vorgelesen wird (standardmäßig „3.5 of 5“); mit labels wird bei ganzen Werten das Label vorgelesen („Gut“). Übergib eine eigene Funktion, um den Text zu übersetzen.

    Ein schreibgeschütztes Rating dient nur der Anzeige. Es bekommt role="img" und einen Namen aus getReadOnlyLabel („Rated 4.8 of 5“), ist nicht in der Tab-Reihenfolge und zeichnet Bruchteile wie 4,3 anteilig.

    Wie funktioniert die Bewertung auf dem Smartphone?

    Ein Finger kennt kein Hover, deshalb gibt es auf Touch-Geräten stattdessen ein Wischen. Drück auf die Sterne, zieh über sie und heb den Finger, um zu bestätigen; die Sterne folgen dem Finger, und touch-action: none auf der Reihe verhindert, dass die Seite beim Ziehen scrollt. Ziehst du den Finger vor den ersten Stern, wird die Bewertung gelöscht, wenn clearable an ist (der Standard).

    Bei grobem Zeiger (Touch) wird jeder Stern zu einem 44px großen Ziel, und die Reihe verteilt ihre Icons in diesem Abstand. Wenn zehn Sterne über einen schmalen Bildschirm hinausragen würden, verkleinert die Reihe die Abstände zwischen ihnen, damit sie trotzdem passt, und die Zahl bleibt in derselben Zeile. Warum es genau 44px sind, steht in unserem Beitrag zur Mindestgröße von Touch-Zielen in React und Tailwind. Beim Loslassen ploppen die gefüllten Sterne nacheinander mit einer kleinen Spring-Animation auf. Ist in den Systemeinstellungen „Bewegung reduzieren“ aktiv, füllen sie sich ohne Animation.

    Wie zeige ich Bewertungssterne und die Übersicht dazu an?

    Sammle Bewertungen mit dem Rating und zeig sie mit der Reviews-Komponente an. Bewertungssterne auf einer Produktseite sind dasselbe Rating im schreibgeschützten Modus, eingebettet in eine Übersicht und eine Liste. Reviews nimmt die Liste der Bewertungen und eine summary mit Durchschnitt, Anzahl und der distribution als Anzahl für 5, 4, 3, 2 und 1 Sterne. Es rendert den Durchschnitt mit schreibgeschützten halben Sternen, fünf Balken, die die Liste beim Antippen filtern, ein Sortiermenü (auf dem Smartphone ein Bottom Sheet), Fotos, die sich im Vollbild öffnen, und „Hilfreich“-Stimmen, die zurückgesetzt werden, wenn das Speichern fehlschlägt.

    tsx
    import { Reviews, type ReviewData } from "@/components/ui/reviews";
    export function ProductReviews({ reviews }: { reviews: ReviewData[] }) {
    return (
    <Reviews
    reviews={reviews}
    summary={{ average: 4.6, count: 126, distribution: [92, 21, 7, 3, 3] }}
    tone="warning"
    locale="de-DE"
    onHelpfulChange={async (id, helpful) => {
    const res = await fetch(`/api/reviews/${id}/helpful`, { method: helpful ? "POST" : "DELETE" });
    if (!res.ok) throw new Error("Stimme nicht gespeichert");
    }}
    />
    );
    }

    Gib summary vom Server mit, wenn die Liste seitenweise geladen wird. Ohne summary ruft Reviews summarizeRatings(reviews) auf, und diese Funktion sieht nur die geladene Seite: Für die Balken werden Bewertungen auf den nächsten ganzen Stern gerundet, und der Durchschnitt behält zwei Nachkommastellen. Die Teilkomponente ReviewsSummary rendert die Übersicht allein, für eine Händlerkarte oder einen Produkt-Header.

    Tipp auf den Balken für 4 Sterne und tipp dann noch einmal darauf. Öffne das Sortiermenü und ein Foto aus einer Bewertung.

    Tipp auf einen Balken der Verteilung, um nur diese Bewertungen zu sehen, und tipp noch einmal, um alle zu sehen. Sortier die Liste, öffne ein Foto im Vollbild und markier eine Bewertung als hilfreich
    $ npx wingo-ui@latest add reviews
    ProDoku: Reviews

    Wie erscheinen Bewertungssterne bei Google?

    Über strukturierte Daten vom Typ AggregateRating auf der Seite; die Komponente selbst fügt keine hinzu. Googles Doku zu Review Snippets (opens in a new tab) verlangt ratingValue und mindestens ratingCount oder reviewCount, geht von 5 als bester und 1 als schlechtester Bewertung aus, wenn du diese Werte weglässt, und schließt Seiten aus, auf denen ein LocalBusiness oder eine Organization die Bewertungen über sich selbst steuert (Stand Oktober 2026). Dieselben Zahlen, die du an summary übergibst, füllen sie:

    tsx
    const jsonLd = {
    "@context": "https://schema.org",
    "@type": "Product",
    name: "Citybike",
    aggregateRating: { "@type": "AggregateRating", ratingValue: 4.6, reviewCount: 126 },
    };

    Wie du das im App Router sicher renderst, steht im Next.js JSON-LD Guide.

    Was sind die typischen Fehler bei Sternebewertungen?

    Fünf, und jeder lässt sich mit einer Prop oder den richtigen Zahlen vom Server beheben:

    • Kein zugänglicher Name. Ein Rating ohne label braucht ein aria-label, sonst sagt ein Screenreader einen Slider ohne Namen an.
    • Halbe Sterne mit Icons pro Wert. icons (ein Gesicht pro Wert, etwa Frown, Meh, Smile, Laugh) lässt immer nur ein Icon aufleuchten und ignoriert allowHalf. Nimm icon für halbe Sterne.
    • Den Durchschnitt runden. Eine 4,4, als vier Sterne gezeichnet, unterschlägt echte Information. Nimm ein schreibgeschütztes Rating, das den Bruchteil zeichnet.
    • Bei jedem Hover speichern. onValueChange wird nur beim Bestätigen ausgelöst: beim Loslassen nach einem Tippen oder Wischen und bei jedem Tastendruck. Speichere dort, nie in einem Pointer-Handler.
    • Übersichten aus nur einer Seite. summarizeRatings auf der ersten Seite der Bewertungen ist nicht der Durchschnitt des Produkts. Schick die Gesamtwerte vom Server.

    Wie füge ich es meinem Projekt hinzu?

    Führ npx wingo-ui@latest add rating aus (oder reviews). Die CLI kopiert den Quellcode nach components/ui, ergänzt die Hooks und Helfer, die er importiert, und installiert motion und lucide-react. Rating und Reviews sind Pro-Komponenten (Preise); Textarea, Field und Button aus dem Formular oben sind kostenlos. Für den Rest des Formulars wendet der Guide zu React-Formularkomponenten dieselben Regeln für Tastatur, Touch und Fehler auf jedes Eingabefeld an, und in der Kategorie Komponenten-Guides findest du weitere Deep Dives zu einzelnen Komponenten.

    Komponenten in diesem Artikel

    • Rating

      A React star rating to rate or show a score with stars or any icon: half values, a hover preview, a label per value and a fill that pops.

      Pro
    • Reviews

      A React reviews section for products and sellers: average, stars, a 5 to 1 filter breakdown, and sortable reviews with photos and replies.

      Pro

    Häufige Fragen

    Wie baue ich eine Bewertung mit halben Sternen in React?

    Teil jeden Stern in der Mitte: Ein Klick auf die linke Hälfte ergibt x,5, die rechte Hälfte einen ganzen Stern, und die Füllung ist dasselbe Icon, auf einen Prozentwert zugeschnitten. Im Rating von Wingo UI ist das die Prop allowHalf, mit der auch die Pfeiltasten in Schritten von 0,5 springen.

    Sollte eine Sternebewertung eine Radio Group oder ein Slider sein?

    Beides ist üblich. MUI Rating und @smastrom/react-rating bauen eine Radio Group, das Rating von Wingo UI ist ein einzelner Slider mit aria-valuetext, sodass ein Screenreader „Gut“ oder „3.5 of 5“ vorliest statt einer bloßen Zahl. Egal wofür du dich entscheidest: Gib jedem Wert ein Text-Label und lass den aktuellen Wert ansagen.

    Wie zeige ich einen Durchschnitt wie 4,3 Sterne an?

    Rendere das Rating schreibgeschützt und lass es den Bruchteil zeichnen. Ein schreibgeschütztes Rating von Wingo UI zeichnet 4,3 anteilig, zeigt die Zahl mit einer Nachkommastelle und wird als „Rated 4.3 of 5“ angesagt.

    Kann Google meine Bewertungssterne in den Suchergebnissen zeigen?

    Ja, wenn die Seite gültige strukturierte Daten vom Typ AggregateRating oder Review mit ratingValue und ratingCount oder reviewCount enthält. Seiten, auf denen ein LocalBusiness oder eine Organization sich selbst bewertet, kommen für die Sterne nicht in Frage.

    Ist das Rating von Wingo UI kostenlos?

    Nein. Rating und Reviews sind Pro-Komponenten. Field, Textarea und Button, die in diesem Guide dazu verwendet werden, sind kostenlos.

    • Rating
    • Reviews
    • Formulare
    • Barrierefreiheit
    • React

    Teilen

    SR

    Über den Autor

    Serban Rusu

    Gründer von Wingo UI

    Serban Rusu hat Wingo UI gegründet. Er baut die Komponenten, die CLI und den MCP-Server und schreibt über React-UIs für Smartphones und KI-Agents.

    Mehr von Serban
    Weiterlesen

    Ähnliche Artikel

    Alle Artikel
    Komponenten-Guides

    Embla Carousel React: barrierefreie Slides ohne Layout Shift

    Bau mit Embla Carousel React ein Karussell für Fotos, Inserate, Testimonials und Onboarding, mit Tastatursteuerung, pausierbarem Autoplay und ohne Layout Shift.

    SRSerban Rusu·19. Okt. 2026·9 Min. Lesezeit
    Komponenten-Guides

    React Animated Counter mit rollenden Ziffern

    Bau einen React Animated Counter, der jede Ziffer wie ein Kilometerzähler rollt, Trennzeichen aus Intl holt, seine Breite hält und Reduced Motion beachtet.

    SRSerban Rusu·19. Okt. 2026·9 Min. Lesezeit
    Komponenten-Guides

    React Audio Player mit Waveform: Scrubbing und Peaks

    Bau einen React Audio Player mit Waveform für Podcasts, Sprachnachrichten und Anruflisten: Spulen per Tastatur, vorberechnete Peaks, keine Layout-Sprünge.

    SRSerban Rusu·19. Okt. 2026·9 Min. Lesezeit
    Newsletter

    Neue Artikel per E-Mail

    Neue Guides, Tutorials und Vergleiche aus dem Wingo UI Blog, sobald sie erscheinen. Die meisten Artikel sind auf Englisch.

    Kein Spam. Du kannst dich jederzeit abmelden.

    WingoUI

    Animierte, konfigurierbare, mobile-first React-Komponenten und Blöcke. Kopier den Quellcode, pass ihn an und lass deinen Coding-Agenten damit bauen.

    Produkt

    • Komponenten
    • Vorlagen
    • Preise
    • KI-Agenten
    • Theme-Generator

    Ressourcen

    • Doku
    • Blog
    • Changelog
    • Changelog-RSS
    • llms.txt

    Rechtliches

    • AGB
    • Datenschutz
    • Rückerstattung
    • Lizenz
    • Impressum

    Komponenten-Kategorien

    • Buttons & Actions
    • Inputs
    • Forms
    • Navigation
    • Overlays
    • Feedback
    • Data Display
    • Tables & Lists
    • Charts & Stats
    • Layout
    • Media
    • AI Kit
    • Text & Effects
    • Mobile
    • Commerce
    • Marketing Sections
    • Blocks
    • Hooks & Utilities

    © 2026 Wingo UI

    Wingo UI