En fait, il y a plusieurs façons d'y parvenir.
Vous souhaitez utiliser JSX dans vos accessoires
Vous pouvez simplement utiliser {} pour que JSX analyse le paramètre. La seule limitation est la même que pour chaque élément JSX: il ne doit renvoyer qu'un seul élément racine.
myProp={<div><SomeComponent>Some String</div>}
La meilleure façon de procéder est de créer une fonction renderMyProp qui retournera des composants JSX (tout comme la fonction de rendu standard), puis d'appeler simplement myProp = {this.renderMyProp ()}
Vous souhaitez transmettre uniquement du HTML sous forme de chaîne
Par défaut, JSX ne vous permet pas de rendre du HTML brut à partir de valeurs de chaîne. Cependant, il existe un moyen de le faire:
myProp="<div>This is some html</div>"
Ensuite, dans votre composant, vous pouvez l'utiliser comme ça:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Attention, cette solution «peut» s'ouvrir sur des attaques de falsification de scripts intersites. Méfiez-vous également que vous ne pouvez rendre que du HTML simple, aucune balise ou composant JSX ou d'autres choses sophistiquées.
La manière du tableau
Dans react, vous pouvez passer un tableau d'éléments JSX. Cela signifie:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Je ne recommanderais pas cette méthode car:
- Cela créera un avertissement (clés manquantes)
- Ce n'est pas lisible
- Ce n'est pas vraiment la manière JSX, c'est plus un hack qu'un design prévu.
La manière des enfants
En l'ajoutant par souci d'exhaustivité, mais en réaction, vous pouvez également obtenir tous les enfants qui sont «à l'intérieur» de votre composant.
Donc, si je prends le code suivant:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Ensuite, les deux divs seront disponibles sous la forme this.props.children dans SomeComponent et pourront être rendus avec la syntaxe standard {}.
Cette solution est parfaite lorsque vous n'avez qu'un seul contenu HTML à transmettre à votre composant (imaginez un composant Popin qui ne prend que le contenu du Popin comme enfant).
Cependant, si vous avez plusieurs contenus, vous ne pouvez pas utiliser d'enfants (ou vous devez au moins le combiner avec une autre solution ici)