JSX(
JavaScript XML、または
JavaScript構文拡張)は、
JavaScriptにXMLのような構文を拡張したものです。Meta(旧Facebook)によってReactで使用するために開発されましたが、現在では様々なWebフレームワークで採用されています。
JSXは、HTMLに似た記述方法でUIを構築できるため、開発効率の向上に貢献します。コンポーネントの構造を視覚的に把握しやすく、保守性も高めることができます。
JSXの構造
JSXは糖衣構文(シンタックスシュガー)であり、最終的には
JavaScriptの関数呼び出しに変換されます。変換後のコードは、元のJSXの構造を反映したものになります。
基本的なJSXの例:
jsx
const element =
Hello, world!
;
このJSXコードは、以下のような
JavaScriptのコードに変換されます。
javascript
const element = React.createElement(
"h1",
null,
"Hello, world!"
);
JSXの特徴
ネストされた要素:
複数の要素を同じ階層に配置する場合、親要素で囲む必要があります。``要素や`
`(`<>>`と短縮可能)を使用できます。
jsx
属性:
HTMLの属性と同様の属性を使用できます。また、カスタム属性を定義してコンポーネントに渡すことも可能です。すべての属性は、コンポーネントにpropsとして渡されます。
jsx

JavaScript式:
JavaScriptの式(文は除く)は、JSX内で`{}`(中括弧)で囲んで記述できます。
jsx
const name = 'Taro';
const element = Hello, {name}!
;
ReactにおけるJSXのレンダリング
Reactでは、JSXで記述された要素は、仮想DOM(Virtual DOM)に変換され、最終的に実際のDOMに反映されます。
条件付きレンダリング:
`if`文はJSX内で直接使用できませんが、三項演算子を使用することで条件に応じたレンダリングが可能です。
jsx
{i === 1 ? 'true' : 'false'}
この例では、`i`が1の場合、`'true'`という文字列が表示されます。
関数の利用:
JSX内では、関数を呼び出してその結果を表示することもできます。
jsx
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Taro',
lastName: 'Yamada'
};
const element = Hello, {formatName(user)}!
;
この例では、`formatName`関数が呼び出され、ユーザーの名前がフォーマットされて表示されます。
JSXの変換
JSXは、Webブラウザで直接読み込むことはできません。Babelなどのツールを使用して、JavaScriptに変換する必要があります。この変換プロセスは、通常、デプロイ前のビルド時に行われます。
まとめ
JSXは、Reactをはじめとする現代的なWeb開発において、非常に重要な役割を果たしています。JSXを理解することで、より効率的で保守性の高いUIを構築することができます。
関連情報:
ECMAScript for XML
外部リンク:
* Draft: JSX Specification