in meinem reagiert Komponente habe ich ein Objekt user
die unveränderliche Verletzung: Objekte gelten nicht als ein Kind reagieren (für verschachtelte Objekte)
{
_id: xxx,
stats: {a: 1, b: 2, c: 3},
shops: [s1, s2, s3] // s1, s2, s3 are all objects
...
}
wie
aussieht und dann in meinem Code ich angeben, dass es sich um ein Objekt .export class UserComponent extends React.Component<void, Props, void> {
static propTypes = {
user: PropTypes.array,
fetchProfile: PropTypes.func.isRequired
};
componentDidMount() {
this.props.fetchProfile();
}
render() {
const { user } = this.props;
return (
<div className='container text-center'>
{user}
<Link to="/">homeE</Link>
</div>
)
}
}
Aber wenn ich den Code der Fehlermeldung ausgeführt sagt:
invariant.js:39 Uncaught Invariant Violation: Objects are not valid as a React child (found: object with keys {thumb, path, photo_id, shop_id, message, _id, date_added}). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons.invaria....
es scheint, dass ich so etwas wie createFragment(user)
tun kann. Aber das funktioniert nicht für mich, weil dieses Objekt viele verschachtelte Objekte wie oben hat.
Weiß jemand, wie das lösen?
ja aber ich möchte es ein Objekt bleiben, weil ein Benutzer so viele geschachtelte Eigenschaften haben. Kann das funktionieren? –
'render' Methode der Komponente nur verantwortlich für Render' view'. Es ist nicht zum Speichern oder Berechnen von Daten gedacht. Was genau willst du mit dem 'user' Objekt machen? Sie können es in eine Zeichenfolge konvertieren und dann dem Benutzer alle seine Schlüssel usw. anzeigen. –
Benutzer ist die eingeloggte Benutzerinfo. Es wird Tonnen von Eigenschaften wie Name, ID, Bild usw. haben. Auf der gleichen Seite befinden sich auch Komponenten, die user.reviews, user.stats, user.messages und user.checkins zum Rendern verwenden. Auch Benutzer haben einige Eigenschaften wie stat, das nur ein verschachteltes Objekt ist. –