LoginSignup
1
2

React コンポーネント

Last updated at Posted at 2023-10-17

コンポーネントの作り方

Reactにおける,コンポーネントの記述方法は,関数を利用する関数コンポーネントクラスを使用するクラスコンポーネントの2つがある.

関数コンポーネント

function FunctionComponent() {
	return (
		<div>
			<h1> Hello, World! </h1>
		</div>
	);
}

export default FunctionComponent;
const FunctionComponent = () => {
	return (
		<div>
			<h1> Hello, World! </h1>
		</div>
	);
}

export default FunctionComponent;

このように関数コンポーネントは,関数を利用して定義を行う.関数の定義方法として,通常の関数とアロー関数があるため,関数コンポーネントの定義に両方とも利用することができる.

クラスコンポーネント

class ClassComponent extends React.Component {
	render(){
		return(
			<div>
				<h1> Hello, World! </h1>
			</div>
		);
	}
}

クラスコンポーネントを定義する場合は,React.Conponentを継承するクラスで定義を行う.
renderメソッドはReactのクラスコンポーネントで定義される特別なメソッドで必ず実装する必要がある.コンポーネントの描画が行われる際に呼び出され,JSXを返す役割を持つ.

親コンポーネントと子コンポーネント

Reactではコンポーネントの中で別のコンポーネントを使うため,重要な概念として親コンポーネント子コンポーネントという関係がある.

親コンポーネント:使う側

const ParentComponent() {
	return(
		<div>
			<ChildComponent />
		</div>
	)
}

使われる側:子コンポーネント

const ChildComponent() {
	return(
		<div>
			<p>Hello React!!</p>
		</div>
	)
}

このように,親コンポーネントとなるParentComponentが子コンポーネントであるChildComponentを使用する.

親コンポーネントから子コンポーネントへのデータの受け渡しはpropsというオブジェクトを利用する.propsについては別にまとめた.

コンポーネントを書く際の注意点

コンポーネントを記述していく上で,注意しなければいけないことがいくつかある.

1.タグ名の頭文字

//間違った書き方
const myComponent = () => {
	// ...
}

//正しい書き方
const MyComponent = () => {
	// ...
}

Reactでは,コンポーネントのタグ名は大文字で始める必要がある.小文字で始まるタグはHTMLの組み込む要素として認識される.コンポーネントは独自に作成されたものであることを示すために,大文字で始める必要がある.

2.クラス属性はclassではなく,className

//HTML
<div class="my-class">Content</div>

//React
<div className="my-class">Content</div>

タグにクラス属性を指定する場合は,classではなくclassNameを利用する.これは,JavaScriptのclassと違いをつけるためにclassName属性を使用する.

3.returnは1つの要素だけ

// エラー
return(
	<p>1つ目</p>
	<p>2つ目</p>
)
//正解パターン1
return(
	<div>
		<p>1つ目</p>
		<p>2つ目</p>
	</div>
)
//正解パターン2
return(
	<React.Fragment>
		<p>1つ目</p>
		<p>2つ目</p>
	</React.Fragment>
)
//正解パターン3
return(
	<>
		<p>1つ目</p>
		<p>2つ目</p>
	</>
)

returnで返すものは1つだけなので,複数の要素を返すとエラーが起きてしまう.
<div>タグで1つにまとめるか,<React.Fragment>で囲むことで,1つの要素として返すことができる.また,<React.Fragment>は省略可能で,<> </>でも良い.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2