Qraft(クラフト) 資格・学習クイズアプリ

React入門 練習問題 56:Reactコンポーネント間のprops受け渡しとエラー解決

次のReactアプリケーションでエラーが表示されました。コードを見て、最も考えられる原因は何ですか?

**エラーメッセージ:**
```
TypeError: Cannot read property 'name' of undefined
```

**コード:**
```jsx
import React from 'react';

function App() {
const userData = { name: 'John Doe', email: 'john@example.com' };

return (
<div className="app">
<h1>ユーザープロフィール</h1>
<UserCard />
</div>
);
}

function UserCard(props) {
return (
<div className="user-card">
<h2>{props.user.name}</h2>
<p>{props.user.email}</p>
</div>
);
}
```

  1. UserCardコンポーネントにuserプロパティが渡されていない
  2. userDataオブジェクトのプロパティ名が間違っている
  3. propsの構文が正しくない
  4. divタグのクラス名が無効
  5. JSXの中でコンポーネント名の大文字小文字が間違っている

Qraftユーザーの成績:正答率 60%(6/10回正解)

正解と解説を見る
正解:UserCardコンポーネントにuserプロパティが渡されていない

このエラーは、UserCardコンポーネントを呼び出す際にuserプロパティを渡していないことが原因です。

【正解の理由】
`<UserCard />`ではuserプロパティが渡されていないため、コンポーネント内の`props.user`はundefinedになり、`undefined.name`にアクセスしてエラーになります。`<UserCard user={userData} />`のように渡す必要があります。

【不正解の理由】
• userDataオブジェクトのプロパティ名が間違っている:userDataは{ name, email }を正しく持っており、プロパティ名に誤りはない
• propsの構文が正しくない:`function UserCard(props)`や`props.user.name`という書き方自体に構文的な誤りはない
• divタグのクラス名が無効:classNameの指定は正しく書かれており、エラーの原因はCSSやクラス名ではない
• JSXの中でコンポーネント名の大文字小文字が間違っている:`UserCard`は正しく大文字始まりで記述されており、コンポーネントとして認識されている

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)