モケラ

Tech Sheets

mokelab

Reactのコンポーネントの基礎

最終更新日:2018-07-11

Reactは、画面をコンポーネントの組み合わせで構築します。他プラットフォーム(Androidなど)ではViewと呼ばれるものに相当します。

Appコンポーネント

create-react-app` で生成されるAppコンポーネントを見てみましょう。

import * as React from 'react';
import './App.css';

import logo from './logo.svg';

class App extends React.Component {
  public render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Welcome to React</h1>
        </header>
        <p className="App-intro">
          To get started, edit <code>src/App.tsx</code> and save to reload.
        </p>
      </div>
    );
  }
}

export default App;

ES6モジュール形式なので見慣れない表現が出てくるかもしれませんが、「そういうもの」として見ていきましょう。

React.Component` を継承したクラスがコンポーネントになります。大事なメソッドは `render()` です。ここで、このコンポーネントがどのようなHTMLを描画するかを記述します。JavaScript(TypeScript)の中に直接HTMLが記述されていますが、このHTMLの部分をJSXと呼びます。

コンポーネントクラスを定義したら、これを外部に公開しないといけません。外部に公開するには `export default App;` を記述します。

コンポーネントを使う

コンポーネントは定義しただけでは描画されません。どこかに描画するための処理を記述する必要があります。

このAppコンポーネントは `index.tsx` で使用されています。

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import App from './App';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

ReactDOM.render(
  <App />,
  document.getElementById('root') as HTMLElement
);
registerServiceWorker();

import App from './App';` で別ファイルのコンポーネントを読み込んでいます。そして `ReactDOM.render()` で「どこに」「どのコンポーネントを配置するか」を指定しています。ここではAppを配置しています。

このように、コンポーネントはカスタムタグのように使用することができます。

一覧に戻る