JSX(JavaScript XML)

JSX(JavaScript XML)とは、JavaScriptのコードの中にHTMLのようなタグを直接書けるようにする記法のことです。Reactとともに広まったもので、画面の見た目とその動きを1か所にまとめて記述できます。

現実世界に例えると、JSXは設計図に完成イメージのスケッチを直接描き込む書き方のようなものです。図面(プログラム)と外観図(画面の構造)を別々の紙に分けず同じ場所にまとめることで、どの処理がどの見た目に対応するのかがひと目で分かります。

JSXの書き方

JavaScriptの中に、HTMLに似たタグをそのまま書きます。たとえば const el = <h1>こんにちは</h1>; のように、変数へタグを代入できます。タグの中で波かっこを使えば <h1>{name}さん</h1> のように変数や計算結果を埋め込めるのが大きな利点です。

ブラウザはJSXをそのまま読めない

JSXはJavaScriptの正式な文法ではないため、ブラウザはJSXをそのまま実行できません。Babelなどのツールが、JSXを通常のJavaScriptへ変換(トランスパイル)したうえで配信されます。変換後は関数呼び出しの形になり、その戻り値をもとに画面が組み立てられます。

HTMLとの主な違い

項目 HTML JSX
クラスの指定 class className
ラベルの関連付け for htmlFor
イベントの書き方 onclick(小文字) onClick(キャメルケース)
閉じタグ 省略できるものがある 必ず閉じる必要がある

これらの違いは、JSXが最終的にJavaScriptへ変換されることに由来します。classやforはJavaScriptの予約語と重なるため、別の名前が割り当てられているのです。

JSXを使う利点

  • 見た目と処理をまとめられる
    部品ごとに、画面の構造とその動きを1か所に書けます。
  • 構造が読み取りやすい
    完成する画面の形が、コードを見ただけで想像しやすくなります。
  • 記述ミスに気づきやすい
    変換の段階で、タグの閉じ忘れなどが検出されます。
  • 部品を組み合わせやすい
    自作した部品をタグと同じ形で呼び出せます。

いくつかの決まり

JSXでは、返せるタグは常に1つの親要素にまとめる必要があります。複数の要素を並べたい場合は、囲むためのタグを置くか、余分な要素を作らない書き方を使います。また、繰り返しで要素を並べるときは、どの要素がどれなのかを区別するための目印を付けます。

利用時の注意点

JSXは便利ですが、変換の仕組みが必要なため、ビルド環境の用意が前提となります。素のHTMLファイルにそのまま書いて動かすことはできません。なおJSXはReact専用ではなく他のライブラリでも採用されており、逆にReactでもJSXを使わずに書くことは可能です。ただし記述量が大きく増えるため、実務ではJSXを使うのが一般的です。

あわせて知っておきたい用語

  • React
    画面部品を組み合わせてUIを作るJavaScriptライブラリで、JSXとともに使われます。
  • JavaScript
    Webページに動きを与えるプログラミング言語です。
  • HTML
    Webページの構造を記述する言語。JSXはこれに似た見た目の記法です。
  • DOM
    ブラウザがページの構造を扱うための仕組みです。
  • 仮想DOM
    変更箇所だけを効率よく反映するための、Reactが使う仕組みです。

コメント

タイトルとURLをコピーしました