✨
Reactの props の正体は オブジェクト
タイトルの通り、Reactのprops
を学習したのでまとめます。
props
とは?
props
はコンポーネントにデータを渡すための手段。props
はオブジェクトであり、その中には親コンポーネントから渡されたすべてのデータが含まれています。
例えば、以下のようなコンポーネントがあった時、
import React from 'react';
// 親コンポーネント
function App() {
return (
<>
<h1>ボタン</h1>
<Button text={'Hello World'} onClick={() => console.log('Hello')} />
</>
);
}
// 子コンポーネント
function Button(props) {
return (
<div>
<button onClick={props.onClick}>{props.text}</button>
</div>
);
}
export default App;
この時、親から子に渡るprops
の中身は次のとおりです。
{
text: 'Hello World'
onClick:()=> console.log('Hello')
}
このため、props.text
とすることでHello World
という値にアクセスすることができ、props.onClick
とすることで、()⇒ console.log('Hello')
という関数にアクセスできます。
また、props
からプロパティを取得するのではなく、分割代入でプロパティを変数として取得すると次のようになります。
import React from 'react';
// 親コンポーネント
function App() {
return (
<>
<h1>ボタン</h1>
<Button text={'Hello World'} onClick={() => console.log('Hello')} />
</>
);
}
// 子コンポーネント
function Button({text, onClick}) {
return (
<div>
<button onClick={onClick}>{text}</button>
</div>
);
}
export default App;
こちらの方がスッキリしてます。
またchildren
としてprops を渡す際も同じです。
function A (){
return (
<UnorderedList>
<li>Hello World</li>
</UnorderedList>
)}
このとき、UnorderedList
コンポーネントには次のようなprops
オブジェクトが渡されます
{
children: <li>Hello World</li>
}
function UnorderedList({ children }) {
return (
<ul>
{children}
</ul>
);
}
まとめ
<button>{props.text}</button>
とすることで、親コンポーネントから渡されたプロパティtext
の値をボタンの中に表示することができます。またprops
はオブジェクトなので、そのまま<button>{props}</button>
のようにして表示することはできません。
このように、Reactではコンポーネント間でデータを渡すためにprops
という名のオブジェクトを使用し、必要なプロパティにアクセスして表示や処理を行います。
Discussion