ReactのPropsでオブジェクト型を扱う方法を完全ガイド!初心者でもわかる型安全なProps管理
先生と生徒の会話形式で理解しよう
生徒
「ReactでPropsにオブジェクトを渡すことってできますか?」
先生
「はい、Propsには文字や数字だけでなく、オブジェクトも渡すことができますよ。」
生徒
「オブジェクトを渡すと、どんな場面で便利なんですか?」
先生
「例えばユーザーの情報をまとめて渡したいときや、住所のように複数の項目を一度に渡したいときに便利です。実際の例を見ていきましょう!」
1. オブジェクト型Propsとは?
オブジェクト型Propsとは、複数の値をまとめたものを一つのPropsとして渡す方法です。オブジェクトは「名前と値のセット」をまとめた箱のようなもので、現実世界でいえば「学生証」のようなイメージです。名前や生年月日、住所などの情報をひとまとめにして扱えるのがオブジェクトです。
2. 基本的なオブジェクト型Propsの使い方
ユーザーの情報をまとめたオブジェクトをPropsとして渡す例を見てみましょう。
type User = {
name: string;
age: number;
};
type UserCardProps = {
user: User; // オブジェクト型
};
function UserCard({ user }: UserCardProps) {
return (
<div>
<h1>{user.name}さん</h1>
<p>{user.age}歳</p>
</div>
);
}
function App() {
const user = { name: "太郎", age: 20 };
return (
<div>
<UserCard user={user} />
</div>
);
}
(画面に「太郎さん」と「20歳」と表示されます)
3. ネストされたオブジェクトをPropsで扱う
オブジェクトの中にさらにオブジェクトを含む「ネスト構造」もPropsで渡せます。例えば住所を含むユーザー情報をまとめる場合です。
type Address = {
city: string;
zip: string;
};
type User = {
name: string;
age: number;
address: Address; // ネストされたオブジェクト
};
type UserCardProps = {
user: User;
};
function UserCard({ user }: UserCardProps) {
return (
<div>
<h1>{user.name}さん</h1>
<p>{user.age}歳</p>
<p>{user.address.city}(郵便番号: {user.address.zip})</p>
</div>
);
}
function App() {
const user = {
name: "花子",
age: 25,
address: { city: "東京", zip: "123-4567" }
};
return (
<div>
<UserCard user={user} />
</div>
);
}
(画面に「花子さん」「25歳」「東京(郵便番号: 123-4567)」と表示されます)
4. オブジェクト型Propsを分割代入で扱う
Propsを受け取るときに分割代入を使うと、コードがすっきりします。分割代入とは「オブジェクトの中の特定の値を取り出す書き方」です。
type User = {
name: string;
age: number;
};
type UserCardProps = {
user: User;
};
function UserCard({ user: { name, age } }: UserCardProps) {
return (
<div>
<h1>{name}さん</h1>
<p>{age}歳</p>
</div>
);
}
(画面にユーザー名と年齢が表示されます)
5. オブジェクト型Propsを使うメリット
オブジェクト型Propsを使うと、次のようなメリットがあります。
- コードが整理される:複数の値を一つのオブジェクトにまとめて渡せます。
- 管理がしやすい:ユーザー情報や住所など、関連するデータを一緒に扱えます。
- 拡張しやすい:新しいプロパティを追加しても柔軟に対応できます。
6. 注意点:型をしっかり定義する
オブジェクト型Propsを使うときは、型をきちんと定義することが重要です。型がないと間違った形のオブジェクトを渡しても気づけません。TypeScriptを使えば「必須」「オプショナル」を区別して定義でき、Reactアプリを安心して開発できます。