JSX
とReact要素
の定義についてざっくりと整理してみました。
JSXとは
JSXはReactでよく見るHTMLタグのようなもの。
<h1 className="greeting">Hello, world!</h1>
React要素とは
JSXから生成されるJavaScriptのオブジェクト。
Reactはこのオブジェクトを読み取りDOMを構築する。
上のJSXからはこのようなオブジェクトが生成される。
{
type: 'h1',
props: {
className: 'greeting',
children: 'Hello, world!'
}
}
JSXからReact要素が生成される過程
-
JSX
はBabelによりReact.createElement()
の呼び出しへとコンパイルされる。 -
React.createElement()
はオブジェクトを生成する。
このオブジェクトをReact要素
と呼ぶ。
Reactはこのオブジェクトを読み取りDOMをレンダーする。
このようにJSX
はコンパイル後にReact要素
と呼ばれるJavaScriptのオブジェクトになるので、
- 変数に代入したり、
- 関数の返り値にしたり、
- propsとして子コンポーネントに渡したり、
することができる。
最後に
とりあえずJSX
とReact要素
は互いにコンパイル前後で呼び名が変わったもの、程度に理解しておけばよさそう。