Using an object directly inside JSX instead of converting it to a string with JSON.stringify()
can lead to errors or unexpected behavior. JSX is designed to render elements, not raw JavaScript objects.
Common Mistake Example:
const data = { name: "John", age: 30 };
const MyComponent = () => {
return (
<div>
{data} // ❌ This will cause an error
</div>
);
};
export default MyComponent;
Error Message:
Warning: Objects are not valid as a React child (found: object with keys {name, age}).
✅ Correct Way Using JSON.stringify()
:
const data = { name: "John", age: 30 };
const MyComponent = () => {
return (
<div>
{JSON.stringify(data)} // ✅ This will render as a string
</div>
);
};
export default MyComponent;
Output:
{"name":"John","age":30}
✅ Better Approach – Render Object Properties:
Instead of just converting to a string, display the properties individually:
const data = { name: "John", age: 30 };
const MyComponent = () => {
return (
<div>
<p>Name: {data.name}</p>
<p>Age: {data.age}</p>
</div>
);
};
export default MyComponent;
Why This Happens:
React cannot render plain objects as part of the DOM. It expects strings, numbers, or React elements. This error is common when debugging data from APIs.