React JSX
JSXとは何ですか?
JSXはJavaScriptXMLの略です。
JSXを使用すると、ReactでHTMLを記述できます。
JSXを使用すると、ReactでのHTMLの記述と追加が簡単になります。
JSXのコーディング
createElement()
JSXを使用すると、JavaScriptでHTML要素を記述し、
メソッドを使用せずにそれらをDOMに配置できappendChild()
ます。
JSXはHTMLタグをreact要素に変換します。
JSXを使用する必要はありませんが、JSXを使用するとReactアプリケーションを簡単に作成できます。
これが2つの例です。1つ目はJSXを使用し、2つ目は使用しません。
例1
JSX:
const myelement = <h1>I Love JSX!</h1>;
ReactDOM.render(myelement, document.getElementById('root'));
例2
JSXなし:
const myelement = React.createElement('h1', {}, 'I do not use JSX!');
ReactDOM.render(myelement, document.getElementById('root'));
最初の例でわかるように、JSXではJavaScriptコード内に直接HTMLを記述できます。
JSXは、ES6に基づくJavaScript言語の拡張であり、実行時に通常のJavaScriptに変換されます。
JSXでの式
JSXを使用すると、中括弧内に式を記述できます{ }
。
式は、React変数、プロパティ、またはその他の有効なJavaScript式にすることができます。JSXは式を実行し、結果を返します。
例
式を実行します5 + 5
:
const myelement = <h1>React is {5 + 5} times better with JSX</h1>;
HTMLの大きなブロックを挿入する
複数行にHTMLを書き込むには、HTMLを括弧で囲みます。
例
3つのリスト項目でリストを作成します。
const myelement = (
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
</ul>
);
1つのトップレベル要素
HTMLコードは、1つの最上位要素でラップする必要があります。
したがって、2つの段落を記述したい場合は、要素のように、それらを親要素内に配置する必要がありますdiv
。
例
1つのDIV要素内に2つの段落をラップします。
const myelement = (
<div>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</div>
);
HTMLが正しくない場合、またはHTMLに親要素がない場合、JSXはエラーをスローします。
または、「フラグメント」を使用して複数の行を折り返すこともできます。これにより、DOMにノードを不必要に追加することを防ぐことができます。
フラグメントは空のHTMLタグのように見えます:<></>
。
例
フラグメント内に2つの段落をラップします。
const myelement = (
<>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</>
);
要素を閉じる必要があります
JSXはXML規則に従うため、HTML要素を適切に閉じる必要があります。
例
空の要素をで閉じる/>
const myelement = <input type="text" />;
HTMLが適切に閉じられていない場合、JSXはエラーをスローします。
属性クラス= className
このclass
属性はHTMLでよく使われる属性ですが、JSXはJavaScriptとしてレンダリングされ、
class
キーワードはJavaScriptで予約語であるため、JSXで使用することはできません。
className
代わりに属性を使用してください。
JSXは、className
代わりにを使用してこれを解決しました。JSXがレンダリングされると、属性が属性に変換className
されclass
ます。
例
JSXclassName
ではなく
属性を使用します。class
const myelement = <h1 className="myclass">Hello World</h1>;
条件-ifステートメント
Reactはif
ステートメントをサポートしますが、 JSX内ではサポートしません。
JSXで条件ステートメントを使用できるようにするには、if
ステートメントをJSXの外部に配置するか、代わりに3項式を使用する必要があります。
オプション1:
if
JSXコードの外部にステートメントを記述します。
例
x
10未満の場合は「こんにちは」 、それ以外の場合は「さようなら」と書いてください。
const x = 5;
let text = "Goodbye";
if (x < 10) {
text = "Hello";
}
const myelement = <h1>{text}</h1>;
オプション2:
代わりに3項式を使用してください。
例
x
10未満の場合は「こんにちは」 、それ以外の場合は「さようなら」と書いてください。
const x = 5;
const myelement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;
JSX内にJavaScript式を埋め込むには、JavaScriptを中括弧で囲む必要があることに注意{}
してください。