È possibile disinfettare la stringa senza utilizzare pericolosamenteSetInnerHTML in React JSX. Il requisito è controllare la lunghezza della stringa html disinfettata e quindi includere solo il componente. Qualcosa comeSanitizza stringa HTML senza utilizzare pericolosamenteSetInnerHTML per il controllo della lunghezza
var SomeComponent = React.createClass({
render:function(){
return (
{this.props.htmlString.length > 0 ? <Child htmlString={this.props.htmlString} : null}
)
}
})
var Child = React.createClass({
render:function(){
return (
<p dangerouslySetInnerHTML={{__html: this.props.htmlString}}></p>
)
}
})
Tutto funziona correttamente ma non riesce quando this.props.htmlString=' '
. In questo caso, la lunghezza> 0 e il componente vengono inclusi. Quindi voglio controllare la lunghezza di innerHTML prima dell'inserimento dell'elemento stesso.
Una possibile soluzione mi sono imbattuto è qualcosa di simile:
var html = " ";
var div = document.createElement('div');
div.innerHTML = html; //check the length of innerHTML now
Ma Cerco un pulitore un altro tipo di reagire.
Non credo ci sia un modo di reagire ma vediamo cosa dice la gente .. sarei interessato per sapere perché stai facendo anche questo strano codice;) –
@DominicTobias Per qualche ragione sto ricevendo editor html da rest API. Impossibile risolverlo a causa di alcuni backlog –
La soluzione che hai fornito è corretta. AFAIK non ci sono altre API di browser per la risoluzione di HTML in testo semplice rispetto al riempimento di un elemento DOM con esso. – hon2a