Objects are not valid as a React child
概要
Reactコンポーネントでオブジェクトを直接レンダリングしようとした際に発生するエラーです。Reactは文字列、数値、要素、配列をレンダリングできますが、プレーンなオブジェクトは直接レンダリングできません。
エラーメッセージ
Objects are not valid as a React child (found: object with keys {name, age}).
If you meant to render a collection of children, use an array instead.
または
Objects are not valid as a React child (found: [object Promise]).
原因
このエラーは以下の原因で発生します:
- オブジェクトを直接表示:
{user}のようにオブジェクトをそのままレンダリング - Promiseを直接表示: 非同期データをawaitせずにレンダリング
- Dateオブジェクトを直接表示:
{new Date()}をそのままレンダリング - JSON.parse結果をそのまま表示: パースしたオブジェクトを直接レンダリング
解決策
1. オブジェクトのプロパティを個別に表示
| |
2. JSON.stringify でデバッグ表示
| |
3. Promiseを正しく処理
| |
4. Dateオブジェクトを文字列に変換
| |
5. 配列の要素を正しくレンダリング
| |
6. 条件付きレンダリングでの注意
| |
よくある間違い
- APIレスポンスをそのままレンダリングしようとする
console.logのノリで{object}と書いてしまう- TypeScriptで型定義しているのに実行時にオブジェクトが渡される
- 親コンポーネントからオブジェクトを文字列として渡すべきところをそのまま渡す
TypeScriptでの予防
| |
関連エラー
参考リンク
関連エラー
React の他のエラー
この記事は役に立ちましたか?