コンポーネントを反応させる
コンポーネントは、HTML要素を返す関数のようなものです。
コンポーネントを反応させる
コンポーネントは、独立した再利用可能なコードビットです。これらはJavaScript関数と同じ目的を果たしますが、単独で機能し、HTMLを返します。
コンポーネントには、クラスコンポーネントと関数コンポーネントの2つのタイプがあります。このチュートリアルでは、関数コンポーネントに焦点を当てます。
古いReactコードベースでは、主にクラスコンポーネントが使用されている場合があります。React16.8で追加されたフックと一緒にFunctionコンポーネントを使用することをお勧めします。参考までに、クラスコンポーネントに関するオプションのセクションがあります。
最初のコンポーネントを作成する
Reactコンポーネントを作成する場合、コンポーネントの名前は大文字で始める必要があります。
クラスコンポーネント
クラスコンポーネントにはextends React.Component
ステートメントを含める必要があります。このステートメントは、React.Componentへの継承を作成し、コンポーネントにReact.Componentの関数へのアクセスを許可します。
コンポーネントにはrender()
メソッドも必要です。このメソッドはHTMLを返します。
例
と呼ばれるクラスコンポーネントを作成します Car
class Car extends React.Component {
render() {
return <h2>Hi, I am a Car!</h2>;
}
}
機能コンポーネント
これは上記と同じ例ですが、代わりにFunctionコンポーネントを使用して作成されています。
関数コンポーネントもHTMLを返し、クラスコンポーネントとほぼ同じように動作しますが、関数コンポーネントははるかに少ないコードを使用して記述でき、理解しやすく、このチュートリアルで推奨されます。
例
と呼ばれる関数コンポーネントを作成します Car
function Car() {
return <h2>Hi, I am a Car!</h2>;
}
コンポーネントのレンダリング
これで、ReactアプリケーションにCarというコンポーネントがあり、
<h2>
要素を返します。
アプリケーションでこのコンポーネントを使用するには、通常のHTMLと同様の構文を使用します。
<Car />
例
Car
「ルート」要素にコンポーネントを表示します。
ReactDOM.render(<Car />, document.getElementById('root'));
小道具
コンポーネントprops
は、プロパティを表すとして渡すことができます。
小道具は関数の引数のようなものであり、属性としてコンポーネントに送信します。
詳細についてprops
は、次の章で説明します。
例
属性を使用してCarコンポーネントに色を渡し、render()関数で使用します。
function Car(props) {
return <h2>I am a {props.color} Car!</h2>;
}
ReactDOM.render(<Car color="red"/>, document.getElementById('root'));
コンポーネント内のコンポーネント
他のコンポーネント内のコンポーネントを参照できます。
例
ガレージコンポーネント内のCarコンポーネントを使用します。
function Car() {
return <h2>I am a Car!</h2>;
}
function Garage() {
return (
<>
<h1>Who lives in my Garage?</h1>
<Car />
</>
);
}
ReactDOM.render(<Garage />, document.getElementById('root'));
ファイル内のコンポーネント
Reactはコードを再利用することであり、コンポーネントを別々のファイルに分割することをお勧めします。
これを行うには、ファイル拡張子を付けて新しいファイルを作成し、その.js
中にコードを配置します。
ファイル名は大文字で始まる必要があることに注意してください。
例
これは新しいファイルで、「Car.js」という名前を付けました。
function Car() {
return <h2>Hi, I am a Car!</h2>;
}
export default Car;
Carコンポーネントを使用できるようにするには、アプリケーションにファイルをインポートする必要があります。
例
これで、「Car.js」ファイルをアプリケーションにインポートし、
Car
ここで作成されたかのようにコンポーネントを使用できます。
import React from 'react';
import ReactDOM from 'react-dom';
import Car from './Car.js';
ReactDOM.render(<Car />, document.getElementById('root'));