コンポーネント間のpropsの受け渡し - React入門

React入門」の前回はJSXについて解説を行いました。今回はReactのコンポーネントについて解説をおこないます。

Reactは作成したいUIを大きなコンポーネント(部品)として扱い、大きなコンポーネントは小さなコンポーネントの組み合わせで作成します。

例えば前回作成したJSXのパーツがあります。

これをコンポーネントとして作成してから描画するように変更してみましょう。

コンポーネントの作成

コンポーネントはReact.createClassのrenderメソッドで作成でき、一度作成したコンポーネントはJSX内ではHTMLタグのように利用できます。
以下はMyComponentコンポーネントを作成して描画するためのコードです。

ES2015のclass構文「React.Component」

React.createClass以外にもReact.Componentを継承してコンポーネントを作成することもできます。

React.ComponentはES2015で定義されたClass構文を用いているためブラウザによっては動作しないこともあります。Babelの設定の際にES2015をプリセットとしてコンパイルできるようにしておけばモダンブラウザでは問題なく動作いたします。

Stateless Functions

更にfunction構文でもコンポーネントが作成できます。これはStateless Functionsと呼ばれReact.Componentで作成したコンポーネントと比較するとライフサイクルメソッド(後ほど解説)などの一部の機能が簡略化されたコンポーネントです。

コンポーネント作成時には基本的にはStateless Functionsで作成を行い、ライフサイクルメソッドなどが必要な場合にはReact.Componentを利用して作成を行います。

コンポーネントを組み合わせる

コンポーネントは細かく定義して組み合わせることが可能です。次のサンプルではh1要素をMyH1コンポーネント、h2要素をMyH2コンポーネントして作成し、組み合わせたMyComponentコンポーネントを描画するようにしています。

このようにReactではHTMLのパーツをコンポーネント単位で管理し組み合わせてUIの作成を行います。

次回はPropsについて解説を行います。