JSX (JavaScript)

JSX (JavaScript XML, formally JavaScript Syntax eXtension) は、 JavaScript に XML のような文法が拡張された言語である。もともとReactで使用するためにFacebook（現Meta）によって作成されたJSXは、複数のWebフレームワークで使用されている 。糖衣構文（シンタックスシュガー）であるJSXは通常、元のJSXと構造的に似ているJavaScriptの関数呼び出しによって作られたコードに変換される。

 マークアップ 
JSXコードの例:

const App = () => {
   return (
     <div>
       <p>Header</p>
       <p>Content</p>
       <p>Footer</p>
     </div>
   ); 
}

 ネストされた要素 
同じ階層に複数の要素を配置する場合、<div>のような親要素か、配列が返され親要素が作られない<Fragment>(<>と短縮できる)を使って囲う必要がある。

 属性 
JSXは、HTMLによって提供される属性と同様な属性を使用できる。また、カスタム属性を定義し、コンポーネントに渡すこともできる。すべての属性は、コンポーネントにpropsとして渡される。

 JavaScript式 
JavaScript の 式 (ただし文ではない)は、{}の JSX 内の中括弧に入れることができる。

  <h1>{10+1}</h1>

Reactの場合、以下のようにレンダリングされる:

  <h1>11</h1>

 条件付き表現 
If文 は JSX 内で使用不可能だが、代わりに三項演算子を使用できる。

この例  では 'true' という文字列がiが1のため選択される。

const App = () => {
   const i = 1;

   return (
     <div>
       <h1>{ i === 1 ? 'true' : 'false' }</h1>
     </div>
   );
}

これはReactの場合以下のようにレンダリングされる:

<div>
  <h1>true</h1>
</div>

同様に関数も使用できる:

const App = () => {
   const sections = [1, 2, 3];

   return (
     <div>
       {sections.map((n,i) => (
           /* 'key' is used by React to keep track of list items and their changes */
           /* Each 'key' must be unique */
           <div key={"section-" + n}>
               Section {n} {i === 0 && <span>(first)</span>}
           </div>
       ))}
     </div>
   );
}

これはReactの場合以下のようにレンダリングされる:

<div>
  <div>Section 1<span>(first)</span></div>
  <div>Section 2</div>
  <div>Section 3</div>
</div>

JSXは、ウェブブラウザで読み込まれる前に、Babelなどのツールで変換する必要がある。ほとんどの場合、このプロセスはデプロイ前のビルドで行われる。

 関連項目 

 ECMAScript for XML

 出典 

 外部リンク 


Category:JavaScript
Category:Metaのソフトウェア
Category:2014年のソフトウェア