nel mio reagiscono componente Ho un oggetto user
che assomigliaInvariant Violazione: Gli oggetti non sono validi come React bambino (per gli oggetti nidificati)
{
_id: xxx,
stats: {a: 1, b: 2, c: 3},
shops: [s1, s2, s3] // s1, s2, s3 are all objects
...
}
E poi nel mio codice a specificare che si tratta di un oggetto .
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>
)
}
}
Ma quando si esegue il codice il messaggio di errore dice:
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....
sembra che io possa fare qualcosa di simile createFragment(user)
. Ma questo non funziona per me perché questo oggetto ha molti oggetti nidificati come sopra.
Qualcuno sa come risolvere questo?
sì ma voglio che rimanga un oggetto perché un utente ha così tante proprietà annidate. può funzionare? –
Metodo 'render' del componente responsabile solo per il rendering' view'. Non è per la memorizzazione o il calcolo di alcuni dati. Cosa vuoi fare esattamente con l'oggetto 'utente'? Puoi convertirlo in una stringa e mostrare all'utente tutte le sue chiavi e così via. L'utente –
è l'utente che ha effettuato l'accesso. avrà tonnellate di proprietà come name, id, image..etc. Inoltre nella stessa pagina ci saranno componenti che user user.reviews, user.stats, user.messages, user.checkins per il rendering. Inoltre gli utenti hanno alcune proprietà come stat che è solo un oggetto nidificato. –