React公式ドキュメントを読む2 公式ドキュメントの「Hello, world!」を動かすには?

前回からの続きですが、このページだけ読んでも分かる内容になっています。

公式サイトのサンプルが動かない?

React公式ドキュメントページにたどり着く

ReactをCDNで読み込んで、とにかくHello Worldと表示したいと思った人は、検索などで以下のReact公式のドキュメントページにたどり着く可能性が高いでしょう。

上記の2つのページを読んだ結果、完成するHTMLソースは以下のようなものかもしれません。

<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
</head>
<body>
  <div id="root"></div>
  <script>
    ReactDOM.render(
      <h1>Hello, world!</h1>,
      document.getElementById('root')
    );
  </script>
</body>
</html>

上記のサンプルソースをHTMLファイルにしたものが以下です。

https://programming-world.net/sample/react_hello_world2-1.html

しかし、上記リンクをクリックしても、画面には何も表示されません。ブラウザの種類をChromeなどに変えても、(将来的には分かりませんが)少なくとも現在は表示されません。

React公式サイトのドキュメントで「 React のいちばん短い例はこのようになります 」と紹介されているコードなのに、なぜ 「Hello, world!」 と表示されないのでしょうか。

React公式サイトのサンプルを動かすには?

React公式サイトで「 React のいちばん短い例はこのようになります」として紹介されているのは、以下のコードです。

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

上記コードを動かすには、以下のように記述します。

<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
    ReactDOM.render(
      <h1>Hello, world!</h1>,
      document.getElementById('root')
    );
  </script>
</body>
</html>

上記のサンプルソースをHTMLファイルにしたものが以下です。

https://programming-world.net/sample/react_hello_world2-2.html

上記リンクをクリックすると、今度は画面に「Hello, world!」と表示されました。(注:IE11では動きません。Edgeでは動きます。IE対策は別記事で。)

動かなかったサンプルと動いたサンプルの違い

このページ内で登場した動かなかったサンプルと動いたサンプルの違いは、2点あります。1点目は、動いた方のサンプルには以下の一行が追加されていることです。

  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

もう一点は、script要素にtype属性が指定されたことです。

  <script type="text/babel">

共通するのは、「babel」 です。 babel とは何でしょうか。

次回へ続きます。