[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
2022-07-10 15:34:30
質問
オブジェクトを含む配列であるstationsというデータを持っています。
stations : [
{call:'station one',frequency:'000'},
{call:'station two',frequency:'001'}
]
配列の位置ごとにuiコンポーネントをレンダリングしたい。今のところ、次のように書くことができます。
var stationsArr = []
for (var i = 0; i < this.data.stations.length; i++) {
stationsArr.push(
<div className="station">
{this.data}
</div>
)
}
そして、レンダリング
render(){
return (
{stationsArr}
)
}
問題は、すべてのデータが印刷されてしまうことです。代わりに、次のようなキーだけを表示したいのです。
{this.data.call}
のようにキーを表示したいのですが、これでは何も印刷されません。
このデータをループして、配列の各位置に対して新しいUI要素を返すにはどうしたらよいでしょうか。
どのように解決するのですか?
駅のリストをReactElementsにマッピングすればよい。
React >= 16では、余分なhtml要素のラッパーを必要とせず、同じコンポーネントから複数の要素を返すことが可能です。16.2以降では
の新しい構文 <>
を使用してフラグメントを作成することができます。これが動作しない、あるいは IDE でサポートされていない場合は
<React.Fragment>
を使うことができます。16.0 と 16.2 の間では、非常にシンプルな
ポリフィル
を使うことができます。
以下を試してみてください。
// Modern syntax >= React 16.2.0
const Test = ({stations}) => (
<>
{stations.map(station => (
<div key={station.call} className='station'>{station.call}</div>
))}
</>
);
// Modern syntax < React 16.2.0
// You need to wrap in an extra element like div here
const Test = ({stations}) => (
<div>
{stations.map(station => (
<div className="station" key={station.call}>{station.call}</div>
))}
</div>
);
// old syntax
var Test = React.createClass({
render: function() {
var stationComponents = this.props.stations.map(function(station) {
return <div className="station" key={station.call}>{station.call}</div>;
});
return <div>{stationComponents}</div>;
}
});
var stations = [
{call:'station one',frequency:'000'},
{call:'station two',frequency:'001'}
];
ReactDOM.render(
<div>
<Test stations={stations} />
</div>,
document.getElementById('container')
);
を忘れないでください。
key
属性を忘れないでください!
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] オブジェクトの配列から、プロパティの値を配列として取り出す。
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] Facebook Reactでコードを再利用するためのミキシンとコンポーネントの使い分け
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] express.json()とexpress.urlencoded()とは何ですか?
-
[解決済み] jQuery scroll() は、ユーザーがスクロールを止めたことを検出する。
-
[解決済み] ネストしたオブジェクトのプロパティを動的に設定する
-
[解決済み] Javascriptのsort()はどのように動作するのですか?
-
[解決済み] Javascript/jQuery。複数選択で値を設定(選択)する
-
[解決済み] jqueryで部分文字列を作成する方法
-
[解決済み] react-hooksによるステート更新時の非同期コードの実行
-
[解決済み] JavaScriptの文字列は何バイトですか?