Day 1・JSXとコンポーネント — 部品を作って渡す
JSXの読み方 — HTMLそっくりだが実はJavaScript
JSXはHTMLに見えるが正体はJavaScript。{}の中に変数や式を書けること、classNameなどの違いを読み取れるようになる。
HTMLに見える。でも実体はJavaScript
Reactのコードを開くと、JavaScriptファイルの中に<p>や<div>といったHTMLらしきものが直接書いてあって驚くかもしれません。これがJSXです。見た目はHTMLそっくりですが、正体はJavaScript。ブラウザに届く前に、裏で「画面を組み立てるJSの命令」へ変換されます。だから『HTMLの顔をしたJS』と思って読むのがコツです。
function Hello() {
return <p>こんにちは、Reactの世界へ</p>;
}returnの後ろに書いた<p>...</p>が、この関数の「見た目」です。関数が値を返すのと同じ感覚で、Reactの部品は「画面の一部」を返します。文字列を返すのではなく、画面の構造を返している、と読み替えてください。
{}の中にはJavaScriptを書ける
JSXがただのHTMLと決定的に違うのは、波かっこ{}の中にJavaScriptの変数や式を差し込めることです。{}は『ここからはJSですよ』という切り替えスイッチだと考えてください。文字を埋め込むだけでなく、足し算や関数呼び出しの結果も書けます。
function Price() {
const yen = 1200;
return <p>お値段は {yen} 円、税込 {Math.round(yen * 1.1)} 円です</p>;
}なぜHTMLとJSを混ぜるのか
昔は「見た目(HTML)」と「動き(JS)」をファイルごとに分けるのが常識でした。でも実際は『このボタンが押されたらこの表示が変わる』のように見た目と動きは強く結びついています。JSXは関連するものを1か所にまとめることで、読むときに視線があちこち飛ばず、部品として理解しやすくします。
HTMLとの小さな違い: className と閉じタグ
JSXはJavaScriptなので、HTMLの一部の書き方がそのままは使えません。代表がclassです。classはJavaScriptの予約語(クラス構文で使う)なので、JSXではclassNameと書きます。見た目はほぼ同じでも、名前が違う点に気づけると読み間違いが減ります。
// HTMLでは class だが、JSXでは className
function Badge() {
return <span className="badge">NEW</span>;
}閉じタグを忘れない
HTMLでは<br>や<img>を閉じなくても許されましたが、JSXでは必ず閉じる必要があります。<br />や<img src="..." />のように、末尾にスラッシュを付けた『自己完結タグ』にしてください。閉じ忘れはReactでよく出るエラーの筆頭です。AIの生成コードでも稀に抜けるので、読むときに閉じているか確認する癖をつけると安全です。
AIにはこう聞く
「このJSXを一行ずつ日本語で説明して。{}の中がJavaScriptとして何をしているか、HTMLと違う書き方(classNameなど)があればそこも教えて」と頼むと、JSXを読む力が早く育ちます。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
JSXの説明として最も適切なものはどれですか。
「JSXの{}には何を書けるのか」を、HTMLしか知らない人にも伝わるように説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。