React

JSX

jyeounjae 2023. 1. 6. 21:38

JSX

Javscrtipt XML

文字でもHTMLでもないJavaScriptの拡張文法で、HTMLをjavascript内部で使っうもの。

JSXはReact Elementを生成します。

ブラウザで実行前にbabelにてjavascriptに変換されます。
const customH1 = <h1 className={titleClassName}>{text}</h1>;

簡単に言えば、React.createElementの簡便な表現!

JSXはcamelCase命名規約を採択しています!


BabelJS

jsxをjavascriptが理解できるようにするComplier

babelはJSX(左)をjavascriptに変換してくれる(右)

 

JSXがbabelにてcompilerされた後の様子

Rernderをすると、createElement()が呼ばれて、elementの内容はpropsにて渡されます。

 


複数のタグが存在する場合は、親タグが子タグを囲む必要があります。

 

jsxの中にjavascriptを使いたい場合

  <body>
    <script src="https://unpkg.com/react@17/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone@7.16.4/babel.min.js"></script>
    <div id="root"></div>
    <script type="text/babel">

      const rootElement = document.getElementById("root");
      const titleClassName = "title!";
      const text = "Hello, world!";
      const props = { className: titleClassName, children: text };
      // spread operation
      // JSX内部にjavascript変数を使うためには、{}にて囲む必要があります。
      const customH1 = <h1 {...props} />;

      const element = customH1;
      ReactDOM.render(element, rootElement);
    </script>
  </body>
</html>