propsは「親から子へデータを渡す仕組み」です。まずは一方向データフローの基本を押さえ、よくあるミス(propsの書き換え)を避けます。
propsの役割:再利用を成立させる
同じUIでも表示する内容が違うことがあります。例えば「ユーザー名」や「記事タイトル」です。
その違いを外から渡せるようにするのがpropsです。
基本:親→子へ渡す
親(App):
<UserCard name="Taro" role="admin" />
子(UserCard):
export default function UserCard(props) {
return (
<div>
<p>Name: {props.name}</p>
<p>Role: {props.role}</p>
</div>
)
}
このようにpropsで表示内容を変えられるので、コンポーネントが再利用可能になります。
分割代入で読みやすくする
propsは分割代入すると読みやすいです。
export default function UserCard({ name, role }) {
return (
<div>
<p>Name: {name}</p>
<p>Role: {role}</p>
</div>
)
}
注意:propsは変更しない
propsは「親から渡される入力」です。子コンポーネント内で書き換えるのは避けます。
- 変更が必要なら state にする(後回)
- 変更は親に依頼して、親がstateを更新する
このルールが崩れるとデータの流れが追えなくなり、バグの温床になります。
練習問題
ProductCardを作り、titleとpriceをpropsで表示してみましょう。- 同じ
ProductCardを3回使って、違う商品を表示してみましょう。 - 子コンポーネント内でpropsを書き換えたくなったら、何をすべきか説明してみましょう。


コメント