要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 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 が最も小さいデータのみを保持します)
背景フレックス レイアウトにより、配置とスペースの割り当てがより効果的に実現されます。最近、flex...
tbody 要素は、thead 要素および tfoot 要素と組み合わせて使用する必要があります...
ここにmysqlドライバmysql.data.dllがあります知らせ:ここではX86バージョンが多く...
目次1. NanoIDがUUIDに取って代わる理由2. jsを生成する方法3. ナノID方式序文:ユ...
この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...
インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...
1. Docker Compose の使用方法は docker コマンドの使用方法と非常に似ています...
MySQL ブール値、偽または真を格納つまり、データベースに保存されるブール値は 0 と 1 であり...
目次基本タイプあらゆるタイプ配列タプルインタフェース関数自己推論を入力する結合タイプ(1つ以上選択)...
目次序文1. 配列走査法1. 各() 2. マップ() 3. 〜のために4. フィルター() 5. ...
1. 建設1. htpasswd.txtファイルを準備するファイルには、パッケージを倉庫にアップロー...
画像内に下線付きのリンクが表示されても驚かないでください。実はとても簡単なので、あなたにもできるので...
XHTMLの img タグは、次のように記述する必要があります: <img alt="...
目次予備作業バックエンド構築フロントエンドページダイレクトレンダリングsetTimeout ページン...
1. .shファイルを実行する./sh ファイルを使用して直接実行することもできますが、現在のターミ...