Tatsächlich gibt es dafür mehrere Möglichkeiten.
Sie möchten JSX in Ihren Requisiten verwenden
Sie können einfach {} verwenden, um JSX zu veranlassen, den Parameter zu analysieren. Die einzige Einschränkung ist dieselbe wie für jedes JSX-Element: Es darf nur ein Stammelement zurückgegeben werden.
myProp={<div><SomeComponent>Some String</div>}
Der am besten lesbare Weg, dies zu tun, besteht darin, eine Funktion renderMyProp zu erstellen, die JSX-Komponenten zurückgibt (genau wie die Standard-Renderfunktion), und dann einfach myProp = {this.renderMyProp ()} aufzurufen.
Sie möchten nur HTML als Zeichenfolge übergeben
Standardmäßig können Sie in JSX kein unformatiertes HTML aus Zeichenfolgenwerten rendern. Es gibt jedoch eine Möglichkeit, dies zu erreichen:
myProp="<div>This is some html</div>"
Dann können Sie es in Ihrer Komponente folgendermaßen verwenden:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Beachten Sie, dass diese Lösung bei Cross-Site-Scripting-Fälschungsangriffen geöffnet werden kann. Beachten Sie auch, dass Sie nur einfaches HTML, kein JSX-Tag, keine JSX-Komponente oder andere ausgefallene Dinge rendern können.
Der Array-Weg
In Reaktion können Sie ein Array von JSX-Elementen übergeben. Das bedeutet:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Ich würde diese Methode nicht empfehlen, weil:
- Es wird eine Warnung erstellt (fehlende Schlüssel)
- Es ist nicht lesbar
- Es ist nicht wirklich die JSX-Methode, es ist eher ein Hack als ein beabsichtigtes Design.
Der Kinderweg
Wenn Sie es der Vollständigkeit halber hinzufügen, aber reagieren, können Sie auch alle Kinder erhalten, die sich in Ihrer Komponente befinden.
Also, wenn ich den folgenden Code nehme:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Dann sind die beiden Divs als this.props.children in SomeComponent verfügbar und können mit der Standardsyntax {} gerendert werden.
Diese Lösung ist perfekt, wenn Sie nur einen HTML-Inhalt an Ihre Komponente übergeben müssen (Stellen Sie sich eine Popin-Komponente vor, die den Inhalt des Popins nur als untergeordnete Elemente verwendet).
Wenn Sie jedoch mehrere Inhalte haben, können Sie keine untergeordneten Inhalte verwenden (oder Sie müssen diese hier zumindest mit einer anderen Lösung kombinieren).