JSX は、JavaScript の中に HTML のような markup を書けるようにする構文拡張です。ブラウザは JSX を理解しません。コードが実行される前に、compiler(Babel、SWC、esbuild など)が通常の関数呼び出しへ変換します。
何に compile されるのか
jsx
el = ;
el = .(
,
{ : },
, name
);
結果は UI を記述する plain JavaScript object("React element")です。これはまだ実 DOM node ではありません。React はその object を読み取り、Virtual DOM を構築します。
function Card({ user }) {
return (
<> {/* Fragment: 余分な <div> なしで root を 1 つにする */}
<h2 className="name">{user.name}</h2> {/* camelCase: class ではなく className */}
{user.isAdmin && <Badge />} {/* {} は任意の JS expression を埋め込む */}
</>
);
}
className, onClick)を使います。HTML ではなく JS に対応するためです。{ } は expression(値、ternary、.map())を埋め込めますが、if のような statement は埋め込めません。JSX は createElement の syntax sugar にすぎないため、JSX でできることは plain JS でもできます。ただし JSX を使うと、UI code が生成する markup に近い形で読めるため、ネストした関数呼び出しよりはるかに読みやすくなります。