Implementierung der React-Sternebewertungskomponente

Implementierung der React-Sternebewertungskomponente

Voraussetzung ist die Eingabe der Bewertungsdaten zum Produkt, anschließend wird auf der Seite die entsprechende Anzahl an Sternen angezeigt.

1. Bereiten Sie drei Sternbilder vor, die unterschiedlichen Bewertungen entsprechen

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügenBildbeschreibung hier einfügen

2. Erwartete Ergebnisse

Solch

Bildbeschreibung hier einfügen

Anruf

<StarScore-Punktzahl={data.wm_poi_score}/>

3. Verarbeiten Sie die eingehenden Daten

Wir müssen die ganzzahligen und dezimalen Teile der Punktzahl erhalten

lass wm_poi_score = this.props.score || '';
lass score = wm_poi_score.toString();
lass scoreArray = score.split('.');

Wenn 4,7 übergeben wird, ist das resultierende ScoreArray ['4', '7']

4. Berechnen Sie anhand der Daten die entsprechende Anzahl von Sternen

// Vollständige Sternzahl let fullstar = parseInt(scoreArray[0]);
// Anzahl der halben Sterne let halfstar = parseInt(scoreArray[1]) >= 5 ? 1 : 0;
// Anzahl der grauen Sterne let nullstar = 5 - fullstar - halfstar;

5. Rendern Sie Komponenten entsprechend der Anzahl der Sterne

lass starjsx = [];
// Vollständige Sterne rendern für (let i = 0; i < fullstar; i++) {
  starjsx.push(<div Schlüssel={i + 'full'} Klassenname="star fullstar"></div>)
}
// Halben Stern rendern, wenn (halber Stern) {
  für (sei j = 0; j < Halbstern; j++) {
    starjsx.push(<div Schlüssel={j + 'half'} Klassenname="Star Halfstar"></div>)
  }
}
// Grauen Stern rendern, wenn (nullstern) {
  für (let k = 0; k < nullstar; k++) {
    starjsx.push(<div Schlüssel={k + 'null'} Klassenname="star nullstar"></div>)
  }
}

OK, der gewünschte Effekt ist erreicht.

6. Manuelle Bewertung

Bildbeschreibung hier einfügen

Beim ersten Anzeigen der Seite werden 5 graue Sterne angezeigt. Fügen Sie jedem Stern ein Klickereignis hinzu. Wenn Sie darauf klicken, wird der dem Stern entsprechende Index abgerufen und ein Hervorhebungsstil hinzugefügt.

<div Klassenname="Sternbereich">
  {this.renderStar()}
</div>
macheEva(i) {
  dies.setState({
    StartIndex: i + 1
  });
}

renderStar() {
  lass Array = []
  für (sei i = 0; i < 5; i++) {
    lass cls = i >= this.state.startIndex ? "Sternelement" : "Sternelement Licht"
    array.push(
      <div onClick={() => this.doEva(i)} Schlüssel={i} Klassenname={cls}></div>
    )
  }
  Array zurückgeben
}

Vollständiger Code

importiere React von „react“;
importiere './StarScore.scss';

// Rendere die 5-Sterne-Score-Methode der Klasse StarScore, die React.Component erweitert {
  renderScore() {
    lass wm_poi_score = this.props.score || '';
    lass score = wm_poi_score.toString();
    lass scoreArray = score.split('.');
    // Vollständige Sternzahl let fullstar = parseInt(scoreArray[0]);
    // Anzahl der halben Sterne let halfstar = parseInt(scoreArray[1]) >= 5 ? 1 : 0;
    // Anzahl der grauen Sterne let nullstar = 5 - fullstar - halfstar;
    lass starjsx = [];

    // Vollständige Sterne rendern für (let i = 0; i < fullstar; i++) {
      starjsx.push(<div key={i + 'full'} className="star fullstar"></div>)
    }
    // Halben Stern rendern, wenn (halber Stern) {
      für (sei j = 0; j < Halbstern; j++) {
        starjsx.push(<div Schlüssel={j + 'half'} Klassenname="Star Halfstar"></div>)
      }
    }
    // Grauen Stern rendern, wenn (nullstern) {
      für (let k = 0; k < nullstar; k++) {
        starjsx.push(<div Schlüssel={k + 'null'} Klassenname="star nullstar"></div>)
      }
    }
    Rückkehr starjsx;
  }
  rendern() {
    return <div className="star-score">{this.renderScore()}</div>;
  }
}

Standard-StarScore exportieren;

StarScore.scss

.Sterne-Score {
  .Stern {
    Breite: 10px;
    Höhe: 10px;
    schweben: links;
    Hintergrundgröße: Abdeckung;
  }

  .voller Stern {
    Hintergrundbild: URL('./img/fullstar.png');
  }

  .halber Stern {
    Hintergrundbild: URL('./img/halfstar.png');
  }

  .nullstar {
    Hintergrundbild: URL('./img/gray-star.png');
  }
}
importiere './Main.scss';
importiere React von „react“;

Klasse Main erweitert React.Component {
  Konstruktor(Requisiten) {
    super(Requisiten);
    }
  }
  
  /**
   * Klicken Sie hier, um zu bewerten */
  macheEva(i) {
    dies.setState({
      StartIndex: i + 1
    });
  }
  /**
   * Sterne für die Rendering-Bewertung */
  renderStar() {
    lass Array = []
    für (sei i = 0; i < 5; i++) {
      lass cls = i >= this.state.startIndex ? "Sternelement" : "Sternelement Licht"
      array.push(
        <div onClick={() => this.doEva(i)} Schlüssel={i} Klassenname={cls}></div>
      )
    }
    Array zurückgeben
  }
  rendern() {
    zurückkehren (
      <div Klassenname="Inhalt">
        <div Klassenname="Sternbereich">
            {this.renderStar()}
          </div>
      </div>
    );
  }
}

Standard-Main exportieren;
.Inhalt {
  Höhe: 100%;
  .eva-Inhalt {
    Hintergrundfarbe: #fff;
    Überlauf: versteckt;
    Rand: px2rem(10px);
    Rand oben: px2rem(74px);
  }
  .Sternbereich {
    Textausrichtung: zentriert;
    Rand oben: px2rem(30px);
  }
  .Stern-Element {
    Breite: px2rem(32px);
    Höhe: px2rem(32px);
    Hintergrundbild: URL('./img/gray-star.png');
    Hintergrundgröße: Abdeckung;
    Anzeige: Inline-Block;
    Rand rechts: px2rem(10px);

    &.Licht {
      Hintergrundbild: URL('./img/light-star.png');
    }
  }
}

Dies ist das Ende dieses Artikels über die Implementierung der React-Sternebewertungskomponente. Weitere relevante Inhalte zur React-Sternebewertung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • React verwendet die Upload-Komponente von Antd, um die Funktion zum Senden von Dateiformularen zu implementieren (vollständiger Code).
  • Lösung für das React-Programm „reine Funktionskomponente setState“ aktualisiert die Seitenaktualisierung nicht
  • React implementiert dynamische Popup-Fensterkomponente
  • So machen Sie React-Komponenten im Vollbildmodus

<<:  Detaillierte Beschreibung der Verwendung der erweiterten Konfiguration von Firewalld unter Linux

>>:  MySQL-Abfrage doppelter Daten (löschen Sie doppelte Daten und behalten Sie die Daten mit der kleinsten ID als einzige Daten)

Artikel empfehlen

SQL-Übung: Produktkategorie-Datenoperation in der Online-Shopping-Datenbank

Datenbank für Online-Einkaufszentren - Produktkat...

Grafisches Tutorial zur Installation der 64-Bit-Desktopversion von Centos 7

Wenn Sie der Meinung sind, dass das System langsa...

So verwenden Sie die JSZip-Komprimierung in CocosCreator

CocosCreator-Version: 2.4.2 Praktische Projektanw...

CocosCreator-Tutorial für den Einstieg: Erstellen Sie Ihr erstes Spiel mit TS

Inhaltsverzeichnis Prämisse TypeScript vs. JavaSc...

JavaScript zum Erzielen eines Fensteranzeigeeffekts

In diesem Artikel wird der spezifische JavaScript...

Erstellen Sie in 5 Minuten einen WebRTC-Videochat

Im vorherigen Artikel habe ich den detaillierten ...

Detaillierte Erklärung der InnoDB-Speicherdateien in MySQL

Physisch gesehen besteht eine InnoDB-Tabelle aus ...

Rhit effiziente Visualisierung Nginx-Protokollanzeigetool

Inhaltsverzeichnis Einführung Installieren Anzeig...

Automatische Dateisynchronisierung zwischen zwei Linux-Servern

Wenn Server B (172.17.166.11) eingeschaltet oder ...

So installieren Sie Oracle Java 14 auf Ubuntu Linux

Vor Kurzem hat Oracle die öffentliche Verfügbarke...

Tutorial zur Installation von RabbitMQ mit Yum auf CentOS8

Geben Sie den Ordner /etc/yum.repos.d/ ein Erstel...

Eine Minute, um die Laufruhe von HTML+Vue+Element-UI zu erleben

Technik-Fan html-Webseite, müssen Sie wissen Von ...

So installieren Sie ElasticSearch auf Docker in einem Artikel

Inhaltsverzeichnis Vorwort 1. Docker installieren...

Installieren Sie Memcached und die PHP Memcached-Erweiterung unter CentOS

In Bezug auf das leistungsstarke verteilte Speich...