コンポーネントで引数を使う方法を教えて!
コンポーネントの引数は書き方がいくつかあるよ。
それぞれ詳しく解説していくね!
コンポーネントの準備
コンポーネントとは表示する内容の部品のことだよ!
親コンポーネントと子コンポーネントを例に引数の書き方を説明します。
TypeScriptを使った例も合わせて説明していきます。
import { Child } from '.../Child.〇〇';
const Parent = () => {
return(
<div>
<h1>親コンポーネント</h1>
<Child /> {/* 子コンポーネントの呼び出し */}
</div>
);
};
const Child = () => {
return(
<div>
<h1>子コンポーネント</h1>
</div>
);
};
引数の書き方
一般的な記述
まずは一番シンプルな方法を解説するね!
親コンポーネント呼び出しの中でkey="value"
と引数を記述します。
const Parent = () => {
return(
<div>
...
<Child title="子のタイトル" /> {/* 子コンポーネントの呼び出し */}
</div>
);
};
子コンポーネントで受け取る引数名を「props」とします。(引数名は自由に設定できます。)
propsはobject型で受け取るので、メソッドチェインをして渡された引数「title」の値を指定して表示させます。
const Child = (props) => {
return(
<div>
<h1>{props.title}</h1>
</div>
);
};
const Child = (props: any) => {
return(
<div>
<h1>{props.title}</h1>
</div>
);
};
関数で引数を渡すような感じと一緒だね!
分割代入で記述
次はもう少し簡潔に書ける方法を解説するね!
もっと簡潔に記述するには分割代入をします。
const Parent = () => {
return(
<div>
...
<Child title="子のタイトル" /> {/* 子コンポーネントの呼び出し */}
</div>
);
};
{}の中に引数名を記述することで、渡された引数を受け取ることができます。
const Child = ({ title }) => {
return(
<div>
<h1>{title}</h1>
</div>
);
};
const Child = ({ title }: string) => {
return(
<div>
<h1>{title}</h1>
</div>
);
};
さっきより引数の見通しがよくなった!
複数の引数を分割代入で記述
複数の引数を扱う方法を解説するね!
複数の引数を渡したいときは、受け取る子コンポーネントでも複数受け取るように記述します。
TypeScriptは記述に少し注意が必要です。
const Parent = () => {
return(
<div>
...
<Child title="子のタイトル" name="タロウ" age=10 /> {/* 子コンポーネントの呼び出し */}
</div>
);
};
const Child = ({ title, name, age }) => {
return(
<div>
<h1>{title}</h1>
<p>{name}</p>
<p>{age}</p>
</div>
);
};
TypeScriptでは受け取る引数の型をそれぞれに指定できないのでany型にしかできません。
const Child = ({ title, name, age }: any) => {
return(
<div>
<h1>{title}</h1>
<p>{name}</p>
<p>{age}</p>
</div>
);
};
propsというobjectに型を指定することで、それぞれの引数に型を指定できます。
const Child = (props: { title: string, name: string, age: number }) => {
return(
<div>
<h1>{props.title}</h1>
<p>{props.name}</p>
<p>{props.age}</p>
</div>
);
};
子コンポーネントで初期値を指定する方法
引数に初期値を指定する方法を解説するね!
子コンポーネントで初期値を設定する方法です。
親コンポーネントで引数を省略することができ、指定しなければこちらの初期値が優先されます。
const Parent = () => {
return(
<div>
...
<Child name="タロウ" age=10 /> {/* 子コンポーネントの呼び出し */}
</div>
);
};
const Child = ({ title = 'タイトル', name = '名前', age = 0 }) => {
return(
<div>
<h1>{title}</h1>
<p>{name}</p>
<p>{age}</p>
</div>
);
};
const Child = ({ title = 'タイトル' as string, name = '名前' as string, age = 0 as number }) => {
return(
<div>
<h1>{title}</h1>
<p>{name}</p>
<p>{age}</p>
</div>
);
};
初期値の指定も関数のときと似ているね!
親コンポーネントと子コンポーネントでの引数の受け渡しについて解説をしました。
TypeScriptでは少し記述に注意する部分があるので、その点に気をつけながら記述しましょう。