●目次
Reactのコンポーネント間でデータをやり取りするために使われるのがProps(プロパティ)です。
Propsは「コンポーネントに渡す値やデータ」を指し、Reactアプリケーションで動的なデータ表示を実現するために重要な役割を持ちます。
今回は、Propsの基本から実践的な使い方までを詳しく解説します。
Propsとは?
Props(プロパティ)は、Reactコンポーネントにデータを渡すための仕組みです。
関数の引数のようなもので、親コンポーネントから子コンポーネントに値を渡す際に使います。
コンポーネントの表示内容を柔軟に変えられるため、同じコンポーネントを異なるデータで再利用することが可能です。
- Propsは読み取り専用で、子コンポーネントから変更することはできません(不変性)。
- Propsは、親コンポーネントからのみ変更できます。
Propsの使い方
では、Propsを使って、親コンポーネントから子コンポーネントにデータを渡してみましょう。
// 親コンポーネント(App.js)
import React from 'react';
import Message from './Message';
function App() {
return (
<div>
<Message text="Hello from Props!" />
</div>
);
}
export default App;
// 子コンポーネント(Message.js)
import React from 'react';
function Message(props) {
return <h1>{props.text}</h1>;
}
export default Message;
- Appコンポーネントは、
Message
という子コンポーネントを表示しています。 Message
コンポーネントには、text
という名前のPropsを渡し、"Hello from Props!"
という文字列を設定しています。Message
コンポーネントは、props.text
を使って渡された文字列を表示します。
Propsの基本構文
Propsを定義する際は、以下のようにして親コンポーネントで子コンポーネントに属性として渡します。
<子コンポーネント名 属性名="値" />
子コンポーネント側では、props
オブジェクトを受け取り、その中から必要な値を取得します。
例えば、props.name
やprops.age
のように取り出します。
複数のPropsを渡す
Propsは複数渡すことも可能です。次の例では、name
とage
の2つのPropsを渡してみましょう。
// 親コンポーネント
function App() {
return (
<div>
<Profile name="Alice" age={25} />
</div>
);
}
// 子コンポーネント
function Profile(props) {
return (
<div>
<h1>Name: {props.name}</h1>
<p>Age: {props.age}</p>
</div>
);
}
- 親コンポーネント
App
から、Profile
コンポーネントにname
とage
のPropsを渡しています。 Profile
コンポーネントでは、props.name
とprops.age
を使って値を表示しています。
分割代入を使ったPropsの受け取り
Propsが多いと、props.〇〇
と何度も書くのは面倒なので、JavaScriptの分割代入を使ってスッキリ記述できます。
function Profile({ name, age }) {
return (
<div>
<h1>Name: {name}</h1>
<p>Age: {age}</p>
</div>
);
}
- このように
Profile({ name, age })
と書くことで、props.name
やprops.age
といった書き方を省略できます。
デフォルトPropsの設定
Propsを渡さなかった場合に、デフォルトの値を設定することも可能です。
これにより、親コンポーネントが値を渡し忘れても、予期しないエラーを防ぐことができます。
function Profile({ name = "Guest", age = 20 }) {
return (
<div>
<h1>Name: {name}</h1>
<p>Age: {age}</p>
</div>
);
}
name
とage
にデフォルト値を設定しています。
この例では、Profile
コンポーネントがname
とage
のPropsを受け取らなかった場合でも、それぞれ”Guest”と20が使われます。
Propsの型指定
大規模なアプリケーションでPropsの型を間違えた場合、エラーが発生する可能性があります。
Reactでは、prop-types
というライブラリを使ってPropsの型指定が可能です。
import PropTypes from 'prop-types';
function Profile({ name, age }) {
return (
<div>
<h1>Name: {name}</h1>
<p>Age: {age}</p>
</div>
);
}
Profile.propTypes = {
name: PropTypes.string,
age: PropTypes.number
};
- このコードでは、
name
が文字列で、age
が数値であることを指定しています。間違った型のPropsが渡されると、コンソールに警告が表示されます。
まとめ
ReactのPropsを使うことで、コンポーネント間でデータを受け渡すことができ、再利用性が向上します。以下のポイントを押さえておきましょう。
- Propsはコンポーネントにデータを渡すための仕組み。
- 親コンポーネントから子コンポーネントに渡され、子コンポーネントはPropsを直接変更できない。
- 分割代入を使うとコードがシンプルに。
- デフォルトPropsを設定すると、Propsが渡されなかった場合の対策になる。
- 型指定をすることで、データの一貫性が保たれる。
これらの基本を押さえれば、Propsを自在に使いこなして、Reactアプリケーションをさらに柔軟に構築できるようになります。次はJSXについて理解を深めましょう!