In realtà, ci sono molti modi per farlo.
Vuoi usare JSX all'interno dei tuoi oggetti di scena
Puoi semplicemente usare {} per fare in modo che JSX analizzi il parametro. L'unica limitazione è la stessa di ogni elemento JSX: deve restituire un solo elemento radice.
myProp={<div><SomeComponent>Some String</div>}
Il modo migliore per farlo è creare una funzione renderMyProp che restituirà componenti JSX (proprio come la funzione di rendering standard) e quindi chiamare semplicemente myProp = {this.renderMyProp ()}
Vuoi passare solo HTML come stringa
Per impostazione predefinita, JSX non consente di eseguire il rendering di HTML grezzo da valori di stringa. Tuttavia, c'è un modo per farlo:
myProp="<div>This is some html</div>"
Quindi nel tuo componente puoi usarlo in questo modo:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Attenzione che questa soluzione "può" aprirsi su attacchi falsi di scripting cross-site. Inoltre, fai attenzione che puoi solo rendere HTML semplice, nessun tag o componente JSX o altre cose fantasiose.
Il modo in cui l'array
In React, puoi passare un array di elementi JSX. Questo significa:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Non consiglierei questo metodo perché:
- Creerà un avviso (chiavi mancanti)
- Non è leggibile
- Non è proprio il modo JSX, è più un hack che un design previsto.
Il modo dei bambini
Aggiungendolo per completezza ma in Reagire, puoi anche ottenere tutti i bambini che sono "dentro" il tuo componente.
Quindi se prendo il seguente codice:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Quindi i due div saranno disponibili come this.props.children in SomeComponent e possono essere visualizzati con la sintassi {} standard.
Questa soluzione è perfetta quando hai un solo contenuto HTML da passare al tuo componente (immagina un componente Popin che accetta solo il contenuto del Popin come figli).
Tuttavia, se hai più contenuti, non puoi usare i bambini (o devi almeno combinarli con un'altra soluzione qui)