はじめてのReact #2「Componentを試してみる」

  • このエントリーをはてなブックマークに追加
  • LINEで送る

ReactはComponentを作るための仕組み?

Reactを触っていて感じるのは、React自体はコンポーネントを作るための仕組みなんだなということです。

例えば現在時間を表示する機能がほしいと思ったら <Justnow>というオリジナルのタグをReactで作成し、必要なWebページに埋め込むだけ。もちろん要素名(タグ名)は自由に命名できます。あとはこの応用で機能毎に必要な要素を用意して組み合わせるようなイメージでしょうか。Reactというと色々できて難しそうなイメージがありましたが、スタート地点は非常にシンプルな気がします。

今回は先ほど例に出した現在時間を表示するためのJustnow Componentを作ってみたいと思います。

現在時間を表示するComponent

サンプル

前回のサンプルにちょろっと書き足しました。このままコピペしてブラウザで開けば実行されます。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Justnow</title>
  <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>

  <!-- Don't use this in production: -->
  <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>

  <script type="text/babel">
    class Justnow extends React.Component {
      render() {
        let now = new Date();
        let now_date = [now.getFullYear(), now.getMonth()+1, now.getDate()].join('-');
        let now_time = [now.getHours(), now.getMinutes(), now.getSeconds()].join(':');

        return <h1>{now_date} {now_time}</h1>;
      }
    }

    ReactDOM.render(
      <Justnow />,
      document.getElementById('root')
    );
  </script>
</body>
</html>
- Sponsored Link -

実行結果

ReactDOM.render()が実行された瞬間の時刻が表示されます。
簡単ですね!

解説

React.Component

ES2015(ES6)以降を使用することが前提となりますが、React.Componentクラスを継承することで新たなComponentを作成することができます。ここではサンプルの通り class Justnow extends React.Component とすることで、JustnowComponentを生成しています。

バージョン16で廃止されてしまいましたが、以前はReact.createClass()というヘルパーを利用してComponentを作成していました。現在では利用することはできませんのでご注意を。

var Justnow = React.createClass({
  render: function(){
    let now = new Date();
    let now_date = [now.getFullYear(), now.getMonth()+1, now.getDate()].join('-');
    let now_time = [now.getHours(), now.getMinutes(), now.getSeconds()].join(':');

    return <h1>{now_date} {now_time}</h1>;
  }
});

何も殺さなくても…と思わないでもないですが、Reactは発展途上ということありしばらくは大胆な仕様変更に付き合う覚悟が必要なようですw

The deprecations introduced in 15.x have been removed from the core package. React.createClass is now available as create-react-class, React.PropTypes as prop-types, React.DOM as react-dom-factories, react-addons-test-utils as react-dom/test-utils, and shallow renderer as react-test-renderer/shallow. See 15.5.0 and 15.6.0 blog posts for instructions on migrating code and automated codemods.
(公式ブログより)

JSXでの中括弧

JSXで中括弧(波括弧)は特別な意味を持ちます。
中括弧で囲まれた内部はプログラムとして扱われ、サンプルの <h1>{now_date} {now_time}</h1> のように変数を出力することができます。

また足し算などの演算や、関数などの呼び出しも行うことが可能です。試しに以下のように変更して実行するとアラートが表示されます。意味はないですがねw

//return <h1>{now_date} {now_time}</h1>;
//  ↓
return <div>{alert("hoge")}</div>;

書籍

React入門 React・Reduxの導入からサーバサイドレンダリングによるUXの向上まで (NEXT ONE)
穴井 宏幸 石井 直矢 柴田 和祈 三宮 肇
翔泳社
売り上げランキング: 139,067

参考ページ

[blogcard url=”https://reactjs.org/docs/react-component.html”%5D
[blogcard url=”https://reactjs.org/blog/2017/09/26/react-v16.0.html”%5D

- Sponsored Link -

同じカテゴリの記事

Donate

投げ銭お待ちしております!

BTC3A9nH1j7qQdKrSTrmnEdweo6zPqpHBmkxC
ETH0x1aE0541198D1F9f2908a25C35032A473e74D3731
XPXaQ9zv65F9ovfoMBrFGiPRG47aSHFhy8SX
MONAMTKgzSiS5BDueZkRCHySih24TGFwHThaDQ (MonaCoin)
ZNYZhnpf4RFYVQTAQiyoJg9dGoeC4bgT3BoSy (BitZeny)

コメント

    ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください