JSXプロフィール
次の変数宣言を考えてみましょう:
const element = <h1>Hello, world!</h1>;
この楽しいタグ構文の文字列でもHTMLでもありません。
それはそれは、JavaScriptの構文拡張で、JSXと呼ばれています。私たちは、JSXで反応を利用してUIは、その適切な相互作用の形で提示されなければならないの、JSXが良く、自然を記述することができることをお勧めします。JSXは、人々がテンプレート言語を考えさせるかもしれないが、それには、JavaScriptのすべての機能を備えています。
JSXはREACT生成することができます「の要素を。」我々は、これらの要素は、次のセクションで私のDOMをレンダリングする方法を探ります。JSXの必要性を学習の基礎で見てみましょう。
なぜJSX?
選挙は、本質的に他の内部ロジックUIと相まってソフトロジックだと思うREACT、例えば、UIは、ハンドルのイベント、通知するためにいくつかのポイントが必要で、UIの状態変化、および優れたデータを表示するUIに準備する必要にバインドする必要があります。
そのような別の実施形態、異なる論理ファイルに分割するフラグを使用するが、ストアユニットにおける2つ「は、成分」疎結合と呼ばれ、問題の分離を達成するためにない反応。我々は深さで、後の章で構成を検討します。あなたはJSでのマークアップ言語を使用していない場合は、この議論の会議はあなたを説得することができるはずです。
JSXの使用をREACT必須ではありませんが、ほとんどの人はJSXとUIのコードではJavaScriptが一緒に置かれたときに、視覚的で補助的な役割を持つことになり、それがディスプレイより有用エラーや警告メッセージをREACT作ることができることがわかります。
この問題を理解した後、我々はJSXにそれを学ぶために始めました!
式に埋め込まれたJSX
次の例では、我々はそのためJSXでそれを使用した後、名前という変数を宣言し、中括弧でそれを包みました:
CONST NAME = ' ジョシュペレス' consot要素 = <H1>こんにちは、{名前} </ H1> ReactDom.render( 要素、 のdocument.getElementById(' ルート' ) );
JSXの構文では、括弧内の任意の有効なJavaScript式を防ぐことができます。例えば、2 + 2、user.firstName又はFORMATNAME(ユーザ)は、有効なJavaScript式です。
次の例では、JavaScript関数FORMATNAME(ユーザー)の結果を呼び出します、その結果は、<H1>要素に埋め込まれています。
関数FORMATNAME(ユーザ){ 戻り user.firstName + ' ' + user.lastName。 } CONSTユーザー= { firstNameの:' ハーパー' 、 lastNameの:' ペレス' }。 CONST要素= ( <H1> こんにちは、{FORMATNAME(ユーザ)}! </ H1> )。 ReactDom.render( 要素、 のdocument.getElementById(' ルート' ) )
複数の行へのより多く頂きますJSXの調査を容易にするために。同時に、我々はそうすることが必要条件に近づいていないが、括弧内のコンテンツを包むお勧めしますが、それは出会い回避することができ、自動的にセミコロン挿入トラップを。
JSXはまた、発現であります
コンパイル後、JSX式は通常のJavaScriptの関数呼び出しに変換され、その値の後にJavaScriptオブジェクトを取得します。
彼はあなたがJSX、JSXと関数からの戻りの引数として、if文と変数に代入されますJSX、JSXのループのコードブロックを使用することができます言います:
関数getGreeting(ユーザ){ 場合(ユーザ){ リターン <H1>こんにちは、{FORMATNAME(ユーザ)} </ H1>! 。 } リターン <H1>こんにちは、ストレンジャー。</ H1> }
JSXの特定の属性
あなたは、文字列リテラルとして指定されたプロパティの値に引用符を使用することができます。
constの要素= <div要素のtabIndex = " 0 " > </ div>;
また、属性値でJavaScript式を挿入するために括弧を使用することができます。
CONST要素= <IMG SRC = {user.avatarUrl}> </ IMG>。
プロパティは、JavaScript式を埋め込まれている場合、中括弧の外の英雄を追加しないでください。あなただけの両方のシンボルを使用することはできません同じプロパティのために、1(発現のための)引用(文字列値のために)マークや括弧を使用する必要があります。
警告:
代わりに、HTML構文JSXの近くにはJavaScriptので、そのDOMを使用リアクト
camelCase
大会のHTML属性名を命名することなく、プロパティの名前を定義するために(という名前の小さなこぶを)。
JSXは、指定された子要素を使用して
ラベルは何のコンテンツが存在しない場合、あなたは、タブを閉じるには、XML構文と同じように/>を使用することができます。
CONST要素= <IMG SRC = {user.avatarUrl} />。
JSXタグは、多くのサブ要素を含めることができます。
constの要素= ( の<div> <H1>こんにちは</ H1>! <H2>グッドここであなたを参照するには、</ H2>。 </ DIV> );
JSX防止インジェクション攻撃
あなたは安全に入力するユーザーの間でJSXに挿入することができます。
CONSTタイトル= response.potentiallyMaliciousInput; // 直接使用することは安全である: CONST要素= {</ H1の>タイトル} <H1の>。
前のすべての入力をレンダリングするDOM REACT、デフォルトではエスケープされます。それはあなたのアプリケーションが明示的に書かれていない独自のコンテンツを挿入しないことを保証します。レンダリングの前にすべてのコンテンツを文字列に変換されています。これは、効果的に防ぐことができますXSS(クロスサイトスクリプティング、クロスサイトスクリプティング)攻撃を。
表すJSXオブジェクト
バベルはReact.createElementという名前JSX翻訳機能の呼び出しになります()。
コードの2種類について、完全に同等です:
constの要素= ( <H1クラス名= " 挨拶" > こんにちは、世界! </ H1> );
constの要素= React.createElement( ' H1 ' 、 {クラス名:' 挨拶' }、 ' !こんにちは、世界' );
React.createElement()
あなたはエラーのないコードを書くため、いくつかのチェックを実行するために進めるが、実際にはそのようなオブジェクトを作成します:
// 注:これはオーバー簡略化された構造である constの要素= { :タイプ「のH1 」、 小道具:{ クラス名:「挨拶」、 子供たちは:「こんにちは、世界!」 } };
これらのオブジェクトは、「要素に反応」と呼ばれています。彼らはあなたが画面の内容に見たいと思って説明します。これらのオブジェクトを読むことによって反応し、その後、構築するために、更新されたDOMを維持するためにそれらを使用しています。
私たちは、DOM要素は、次のセクションでレンダリングさに反応する方法を模索します。