Qu'est-ce qu'un "enfant" ?
La documentation de React indique que vous pouvez utiliser props.children
sur des composants qui représentent des "boîtes génériques" et qui ne connaissent pas leurs enfants à l'avance. Pour moi, cela n'a pas vraiment clarifié les choses. Je suis sûr que pour certains, cette définition est parfaitement logique, mais ce n'est pas le cas pour moi.
Ma simple explication de ce que this.props.children
c'est que il est utilisé pour afficher ce que vous incluez entre les balises d'ouverture et de fermeture lorsque vous invoquez un composant.
Un exemple simple :
Voici un exemple de fonction apatride utilisée pour créer un composant. Encore une fois, puisqu'il s'agit d'une fonction, il n'y a pas d'élément de type this
donc utilisez simplement props.children
const Picture = (props) => {
return (
<div>
<img src={props.src}/>
{props.children}
</div>
)
}
Ce composant contient un <img>
qui reçoit des props
et ensuite il affiche {props.children}
.
Chaque fois que ce composant est invoqué {props.children}
s'affiche également. Il s'agit simplement d'une référence à ce qui se trouve entre les balises d'ouverture et de fermeture du composant.
//App.js
render () {
return (
<div className='container'>
<Picture key={picture.id} src={picture.src}>
//what is placed here is passed as props.children
</Picture>
</div>
)
}
Au lieu d'invoquer le composant avec une balise de fermeture automatique <Picture />
si vous l'invoquez, il remplira les balises d'ouverture et de fermeture <Picture> </Picture>
vous pouvez alors placer plus de code entre eux.
Cela permet de découpler le <Picture>
de son contenu et le rend plus réutilisable.
Référence : Une rapide introduction aux props.children de React
3 votes
Duplicata possible de ReactJS : Pourquoi utiliser this.props.children ?
3 votes
Le lien indiqué ne précise pas clairement ce qui se passe lorsque j'utilise {this.props.children} dans un composant.
0 votes
Meilleure ressource mxstbr.blog/2017/02/react-children-deepdive