Sternenbewertungs Komponente in React erstellen

ReactReactBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir untersuchen, wie man in React eine Sternenbewertungs Komponente erstellt. Die Komponente wird eine Reihe von Sternen anzeigen, mit denen Benutzer interagieren können, um den Bewertungs-Wert festzulegen. Wir werden den useState()-Hook verwenden, um den Zustand der Komponente zu verwalten und Benutzerinteraktionen mit Hilfe von onMouseOver-, onMouseLeave- und onClick-Events zu behandeln.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/FundamentalsGroup -.-> react/conditional_render("Conditional Rendering") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38362{{"Sternenbewertungs Komponente in React erstellen"}} react/event_handling -.-> lab-38362{{"Sternenbewertungs Komponente in React erstellen"}} react/conditional_render -.-> lab-38362{{"Sternenbewertungs Komponente in React erstellen"}} react/hooks -.-> lab-38362{{"Sternenbewertungs Komponente in React erstellen"}} react/use_state_reducer -.-> lab-38362{{"Sternenbewertungs Komponente in React erstellen"}} end

Sternenbewertung

In der VM wurden bereits index.html und script.js zur Verfügung gestellt. Im Allgemeinen müssen Sie nur Code in script.js und style.css hinzufügen.

Erstellen Sie eine Star-Komponente, die jeden einzelnen Stern mit einem passenden Aussehen basierend auf dem Zustand der übergeordneten Komponente rendert. Definieren Sie dann eine StarRating-Komponente, die den useState()-Hook verwendet, um die rating- und selection-Zustandsvariablen mit passenden Anfangswerten zu definieren.

In StarRating erstellen Sie eine Methode namens hoverOver, die selection gemäß dem bereitgestellten event aktualisiert. Wenn event nicht bereitgestellt wird oder es null ist, setzen Sie selection auf 0. Verwenden Sie das .data-star-id-Attribut des Ziels des Ereignisses, um den Wert von selection zu bestimmen.

Als Nächstes erstellen Sie ein Array von 5 Elementen mit Array.from() und erstellen Sie einzelne <Star>-Komponenten mit Array.prototype.map(). Behandeln Sie die onMouseOver- und onMouseLeave-Ereignisse des umschließenden Elements mit hoverOver. Behandeln Sie das onClick-Ereignis mit setRating.

.star {
  color: #ff9933;
  cursor: pointer;
}
const Star = ({ marked, starId }) => {
  return (
    <span data-star-id={starId} className="star" role="button">
      {marked ? "\u2605" : "\u2606"}
    </span>
  );
};

const StarRating = ({ value }) => {
  const [rating, setRating] = React.useState(parseInt(value) || 0);
  const [selection, setSelection] = React.useState(0);

  const hoverOver = (event) => {
    let val = 0;
    if (event && event.target && event.target.getAttribute("data-star-id"))
      val = event.target.getAttribute("data-star-id");
    setSelection(val);
  };

  return (
    <div
      onMouseLeave={() => hoverOver(null)}
      onMouseOver={hoverOver}
      onClick={(e) =>
        setRating(e.target.getAttribute("data-star-id") || rating)
      }
    >
      {Array.from({ length: 5 }, (v, i) => (
        <Star
          starId={i + 1}
          key={`star_${i + 1}`}
          marked={selection ? selection >= i + 1 : rating >= i + 1}
        />
      ))}
    </div>
  );
};

Schließlich rendern Sie die StarRating-Komponente mit einem Anfangswert von 2, indem Sie ReactDOM.createRoot(document.getElementById('root')).render(<StarRating value={2} />); aufrufen.

Klicken Sie bitte in der unteren rechten Ecke auf 'Go Live', um den Webdienst auf Port 8080 auszuführen. Anschließend können Sie die Registerkarte Web 8080 aktualisieren, um die Webseite anzuschauen.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Sternenbewertungs-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.