要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 1. 異なる評価に対応する3つの星の写真を用意する 2. 期待される結果 そのような 電話 <StarScore スコア={data.wm_poi_score}/> 3. 受信したデータを処理する スコアの整数部分と小数部分を取得する必要があります wm_poi_score を this.props.score || とします。 スコアをwm_poi_score.toString()とします。 scoreArray = score.split('.'); とします。 4.7が渡された場合、結果のスコア配列は 4. データに基づいて対応する星の数を計算する // 完全な星の数 let fullstar = parseInt(scoreArray[0]); // 半分の星の数 let halfstar = parseInt(scoreArray[1]) >= 5 ? 1 : 0; // 灰色の星の数 let nullstar = 5 - fullstar - halfstar; 5. 星の数に応じてコンポーネントをレンダリングする starjsx = [] とします。 // 完全な星をレンダリングする for (let i = 0; i < fullstar; i++) { starjsx.push(<div key={i + 'full'} className="star fullstar"></div>) } // 半分の星をレンダリングする if (halfstar) { (j = 0; j < ハーフスター; j++) の場合 { starjsx.push(<div key={j + 'half'} className="star halfstar"></div>) } } // 灰色の星をレンダリングします if (nullstar) { (k = 0; k < nullstar; k++ とします) { starjsx.push(<div key={k + 'null'} className="star nullstar"></div>) } } はい、望んでいた効果が達成されました。 6. 手動スコアリング ページが最初に表示されるときに、5 つの灰色の星が表示されます。各星にクリック イベントを追加します。クリックすると、星に対応する下付き文字インデックスが取得され、それにハイライト スタイルが追加されます。 <div className="スターエリア"> {this.renderStar()} </div> doEva(i) { this.setState({ 開始インデックス: i + 1 }); } レンダースター() { 配列 = [] とする (i = 0; i < 5; i++ とします) { cls = i >= this.state.startIndex ? "スターアイテム" : "スターアイテム ライト" とします 配列.push( <div onClick={() => this.doEva(i)} キー={i} クラス名={cls}></div> ) } 配列を返す } 完全なコード 'react' から React をインポートします。 './StarScore.scss' をインポートします。 // 5つ星スコアメソッドをレンダリングする class StarScore extends React.Component { レンダリングスコア() { wm_poi_score を this.props.score || とします。 スコアをwm_poi_score.toString()とします。 scoreArray = score.split('.'); とします。 // 完全な星の数 let fullstar = parseInt(scoreArray[0]); // 半分の星の数 let halfstar = parseInt(scoreArray[1]) >= 5 ? 1 : 0; // 灰色の星の数 let nullstar = 5 - fullstar - halfstar; starjsx = [] とします。 // 完全な星をレンダリングする for (let i = 0; i < fullstar; i++) { starjsx.push(<div key={i + 'full'} className="star fullstar"></div>) } // 半分の星をレンダリングする if (halfstar) { (j = 0; j < ハーフスター; j++) の場合 { starjsx.push(<div key={j + 'half'} className="star halfstar"></div>) } } // 灰色の星をレンダリングします if (nullstar) { (k = 0; k < nullstar; k++ とします) { starjsx.push(<div key={k + 'null'} className="star nullstar"></div>) } } starjsx を返します。 } 与える() { <div className="star-score">{this.renderScore()}</div> を返します。 } } デフォルトの StarScore をエクスポートします。 スタースコア.scss .星スコア { 。星 { 幅: 10px; 高さ: 10px; フロート: 左; 背景サイズ: カバー; } .fullstar { 背景画像: url('./img/fullstar.png'); } .ハーフスター{ 背景画像: url('./img/halfstar.png'); } .nullstar { 背景画像: url('./img/gray-star.png'); } } './Main.scss' をインポートします。 'react' から React をインポートします。 クラスMainはReact.Componentを拡張します。 コンストラクタ(props) { スーパー(小道具); } } /** * クリックして評価してください */ 実行Eva(i) { this.setState({ 開始インデックス: i + 1 }); } /** * レンダリング評価の星 */ レンダースター() { 配列 = [] とする (i = 0; i < 5; i++ とします) { cls = i >= this.state.startIndex ? "スターアイテム" : "スターアイテム ライト" とします 配列.push( <div onClick={() => this.doEva(i)} キー={i} クラス名={cls}></div> ) } 配列を返す } 与える() { 戻る ( <div クラス名="コンテンツ"> <div className="スターエリア"> {this.renderStar()} </div> </div> ); } } デフォルトのメインをエクスポートします。 。コンテンツ { 高さ: 100%; .eva-コンテンツ{ 背景色: #fff; オーバーフロー: 非表示; マージン: px2rem(10px); 上マージン: px2rem(74px); } .star-area { テキスト配置: 中央; 上マージン: px2rem(30px); } .スターアイテム{ 幅: px2rem(32px); 高さ: px2rem(32px); 背景画像: url('./img/gray-star.png'); 背景サイズ: カバー; 表示: インラインブロック; 右マージン: px2rem(10px); &。ライト { 背景画像: url('./img/light-star.png'); } } } React 星評価コンポーネントの実装に関するこの記事はこれで終わりです。React 星評価の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CMDコマンドを使用してMySqlデータベースを操作する方法の詳細な説明
>>: MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)
最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...
var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...
はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...
目次1. 概要2. メモリ管理3. ガベージコレクション4. GCアルゴリズムの紹介5. 参照カウン...
mysql ストレージ エンジン: MySQL サーバーはモジュール スタイルを採用しており、特にス...
この記事では、参考までに、centOSにmysql5.7をインストールする詳細な手順を紹介します。具...
序文基本的に、職場のプログラマーは、count(*)、count(1)、または count(prim...
この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...
1. はじめに英語に慣れていない人は、システムを英語から中国語に変更したいかもしれません。一方、クラ...
故障したストレージ ドライブからデータを救出する場合でも、アーカイブをリモート ストレージにバックア...
目次序文1. 背景2. シミュレーションテスト3. 結論要約する序文もし私が罠に陥っていなかったら、...
困難SVG グラフィックの 2 つのマスクの作成まず、コード左側のピンク色のボックスの内容ですこれに...
目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...
今日は仮想マシンを使って実験をしました。システムをインストールし、いくつかのオプションを最適化した後...
目次1. 文法2. 例3. その他の関連方法長い間、reduce() メソッドの具体的な使い方を理解...