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 2. Erwartete Ergebnisse Solch 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. 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 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:
|
<<: Detaillierte Beschreibung der Verwendung der erweiterten Konfiguration von Firewalld unter Linux
Inhaltsverzeichnis 1. So führen Sie stapelweise U...
Umfeld Linux 3.10.0-693.el7.x86_64 Docker-Version...
Verwenden Sie CSS3, um das Eingabefeld ähnlich de...
【Autor】 Liu Bo: Leitender Datenbankmanager im Ctr...
Ich möchte eine Frage stellen. Ich habe in Dreamw...
Das WeChat-Applet Uniapp realisiert den Löscheffe...
Inhaltsverzeichnis Vorwort -Link Benutzerdefinier...
Inhaltsverzeichnis dva Verwendung von dva Impleme...
Inhaltsverzeichnis Hintergrund Wirkung Ideen Hint...
<br />Statistiken zufolge hat sich die durch...
Inhaltsverzeichnis Horizontales Balkendiagramm Da...
Ein Frame ist ein Webseitenbildschirm, der in mehr...
Als er über die Seite zur Bedienung der Bildschir...
1. Einführung in Flex Layout Flex ist die Abkürzu...
In den letzten zwei Tagen hatte ich große Problem...