React入門 - 5. propsの使い方
5. propsの使い方
これまでの学習で、関数コンポーネントを定義して画面に "Hello World!" と出力することができました。次はコンポーネント間でのデータの受け渡しについて確認していこうと思います。以前に作成したReactアプリケーションでは App コンポーネントの中で Hello コンポーネントを定義しています。src フォルダの App.js を確認してみましょう。
import logo from './logo.svg';
import './App.css';
import Hello from './Hello';
function App() {
return (
<Hello />
);
}
export default App;
ここでは Hello コンポーネントの利用時にデータを受け渡すことができるようにプログラムを修正します。具体的には次のように Hello コンポーネントを利用することを目指します。
<Hello name="React" />
上記のコードを見るとJSXによる <Hello> コンポーネントの定義に name="React" が追記されています。Reactのコンポーネントはこのような属性値やあるいは子要素の指定を props と呼ばれる仕組みを使って実現できるようになっています。
propsとはコンポーネントのプロパティを意味します
Hello.js に props を追加する
それでは props を使ってデータを受け取ることができるように Hello.js を修正してみましょう。
function Hello(props) {
return (
<h1>Hello {props.name}!</h1>
)
}
export default Hello;
修正箇所は2箇所あります。まず1つ目は Hello 関数に引数 props が追加されています。
function Hello(props) {
// ...省略
}
Reactの関数コンポーネントはこのように引数で props を受け取ることができます。
それから修正箇所の2つ目を見てみましょう。Hello 関数の内部を見ると <h1> タグによる出力部分において props を参照するように修正しています。
<h1>Hello {props.name}!</h1>
JSXでは変数の値を動的に出力する際には {} を使います。ここでは引数で受け取った props の name プロパティを出力しています。つまり <Hello name="React" /> コンポーネントの name 属性の値( React ) を出力することになります。このように関数コンポーネントは引数 props を経由してコンポーネントのプロパティ(属性値)にアクセスできます。
App.js の修正
さいごに props を受け取るように修正した Hello コンポーネントに合わせて、親コンポーネントである App.js も修正しておきましょう。
import logo from './logo.svg';
import './App.css';
import Hello from './Hello';
function App() {
return (
<Hello name="React" />
);
}
ここでは <Hello name="React" /> と修正しています。さきほど修正した Hello コンポーネントに対して name プロパティに "React" と指定しています。
動作確認
それではブラウザからアクセスして動作を確認しておきましょう。 npm start によって開発サーバを起動した状態で、ブラウザを開いて http://localhost:3000 にアクセスすると次のような結果を確認できるでしょう。

上記のように <Hello name="React" /> コンポーネントによる出力結果である Hello React! というメッセージを確認できます。Reactアプリケーションの開発では、コンポーネント間のデータの受け渡しに props を使います。注意点としては props によるデータの受け渡しは常に一方向です。親コンポーネントから子コンポーネントへとデータを渡すように実装します。
ここでは props を使ったコンポーネント間のデータの受け渡しについて学習しました。次はコンポーネントにおいてstate(状態)を管理する方法について学習します。