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を配置しています。
このように、コンポーネントはカスタムタグのように使用することができます。