w moim reagować składnik mam obiektu user
który wyglądaInwariant Naruszenie: Obiekty nie są ważne jako React dziecka (dla obiektów zagnieżdżonych)
{
_id: xxx,
stats: {a: 1, b: 2, c: 3},
shops: [s1, s2, s3] // s1, s2, s3 are all objects
...
}
a następnie w moim kodu I określić, że jest to obiekt .
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>
)
}
}
Ale kiedy uruchomić kod komunikat o błędzie mówi:
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....
wydaje się, że mogę zrobić coś podobnego createFragment(user)
. Ale to nie działa, ponieważ ten obiekt ma wiele zagnieżdżonych obiektów, takich jak powyższe.
Czy ktoś wie, jak rozwiązać ten problem?
tak, ale chcę, aby pozostawał obiektem, ponieważ użytkownik ma tyle zagnieżdżonych właściwości. czy to działa? –
Metoda 'renderowania' składnika tylko odpowiedzialna za render 'widok'. Nie służy do przechowywania lub obliczania niektórych danych. Co dokładnie chcesz zrobić z obiektem 'user'? Możesz przekonwertować go na ciąg, a następnie pokazać użytkownikowi wszystkie jego klucze i tak dalej. –
użytkownik jest zalogowanym użytkownikiem. będzie miał mnóstwo właściwości, takich jak nazwa, id, obraz..etc. Na tej samej stronie pojawią się składniki, które wymagają User.reviews, user.stats, user.messages, user.checkins do renderowania. Również użytkownicy mają pewne właściwości, takie jak stat, który jest po prostu obiektem zagnieżdżonym. –