Réagir accessoires.les enfants n'est pas de la matrice de
Selon la réagir docs, si un composant a plusieurs enfants, cette.accessoires de jeu.les enfants devraient être un tableau.
J'ai le composant suivant:
export class Two extends React.Component {
componentDidMount() {
console.log(Array.isArray(this.props.children)); //false
}
render() {
return(
<div>
{this.props.children}
</div>
);
}
};
Que je passe les enfants dans une autre composante de la méthode render ():
<Two>
<Img src="/photos/tomato.jpg"/>
<Img src="/photos/tomato.jpg"/>
</Two>
Pourquoi est-ce.accessoires de jeu.enfants pas un tableau? Plus important encore, comment puis-je obtenir pour être un?
- Aussi, selon le docs, les enfants est opaque structure de données.
- Que devez-vous faire avec
this.props.children
? Si vous souhaitez effectuer une itération sur tous les enfants que vous avez des outils comme dans Réagir les Enfants utilitaires. - Est-ce parce que l'Img est en majuscule?
- Img est un composant personnalisé que j'ai créé
- Qui, finalement, a travaillé, mais il se sent un peu maladroit pour quelque chose que j'imagine est tout à fait commun. Cela a fait le tour:
let children = []; React.Children.forEach(this.props.children, function(child) { children.push(child); });
- Je dirais que lors de l'utilisation de Réagir de confinement composition: reactjs.org/docs/composition-vs-inheritance.html#containment. Dans ce scénario, où nous sommes injecter le contenu dans un autre composant, accessoires.les enfants seront toujours un tableau d'objets. Bien que je ne suis pas sûr de ce fait, je pense donc que ce doit être sa propre cause. Peut-être que je vais en créer un.
Vous devez vous connecter pour publier un commentaire.
Trouvé une meilleure solution pour cette après quelques recherches dans le De réagir.Les enfants de la source. Il ressemble à un
.toArray()
méthode a été ajoutée à Réagir à 0,14, à paraître prochainement.Une fois qu'il est sorti, nous serons en mesure de simplement faire quelque chose comme ceci: