第8回
propsとmap:自己紹介カードをたくさん並べよう
外から情報を渡すpropsと、配列から要素を並べるmapを小学生向けに解説。名まえカードを使い回して、自己紹介カードやミニ図鑑をたくさん並べる方法を作りながら学びます。
props = 外からわたす情報
前回のカードは、名前が「山田たける」で固定でした。でも、名前や趣味を外からわたせるようにすると、1つの部品でいろんな人のカードが作れます。
この「外からわたす情報」を props(プロップス) といいます。カードに書きこむメモのようなものです。
function NameCard({ name, hobby }) {
return (
<div className="card">
<h2>{name}</h2>
<p>趣味:{hobby}</p>
</div>
)
}{ name, hobby } の部分が「受け取る情報」です。使うときは、こう書きます。
function App() {
return (
<div>
<NameCard name="山田たける" hobby="サッカー" />
<NameCard name="田中はるか" hobby="ダンス" />
<NameCard name="鈴木ゆな" hobby="読書" />
</div>
)
}name="..." や hobby="..." で、それぞれのカードにちがう情報をわたしています。画面にはこう出ます。
山田たける
趣味:サッカー
田中はるか
趣味:ダンス
鈴木ゆな
趣味:読書
1つの NameCard から、中身のちがう3枚のカードができました。これがpropsの便利さです。
map = データからならべる
まず、みんなの情報を**リスト(配列)**にまとめます。
const friends = [
{ name: '山田たける', hobby: 'サッカー' },
{ name: '田中はるか', hobby: 'ダンス' },
{ name: '鈴木ゆな', hobby: '読書' },
]そして map を使うと、このリストから自動でカードをならべられます。
function App() {
return (
<div>
{friends.map((f) => (
<NameCard key={f.name} name={f.name} hobby={f.hobby} />
))}
</div>
)
}friends.map(...) は「リストの1つずつについて、カードを作ってね」という意味です。key={f.name} は「ならべるときの目印(名ふだ)をつける」という、Reactとのお約束です。
これで、friends にデータを足すだけで、カードが自動でふえます。
山田たける
趣味:サッカー
田中はるか
趣味:ダンス
鈴木ゆな
趣味:読書
佐藤けんと
趣味:ゲーム
データに「佐藤けんと」を1人足したら、カードも1枚ふえました。これが「自己紹介カード集(ミニ図鑑)」です!
やってみよう
friends のリストに、自分と友だちを足してみましょう。hobby を food(好きな食べ物)に変えたり、項目をふやしたりしてもおもしろいです。好きな動物やキャラクターの「ミニ図鑑」も作れますよ。
まとめ
- props … コンポーネントに外から情報をわたすしくみ(
name="..."のように書く) - 1つの部品でも、propsを変えれば中身のちがうカードが何枚でも作れる
- map … データのリストから、自動で部品をならべる技
key… ならべるときの目印(つけるお約束)- データを足すだけでカードがふえる → これがミニ図鑑・自己紹介カード集
次の第9回では、ボタンをおすと画面が変わるしくみ(stateとイベント)を学びます。いよいよ「動く」アプリに近づきます。