Esiste una differenza "dietro le quinte" dall'impostazione di innerHTML di un elemento rispetto all'impostazione della proprietà dangerouslySetInnerHTML su un elemento? Supponiamo che io stia correttamente igienizzando le cose per il gusto della semplicità.React.js: Set innerHTML vs dangerouslySetInnerHTML
Esempio:
var test = React.createClass({
render: function(){
return (
<div contentEditable='true' dangerouslySetInnerHTML={{ __html: "Hello" }}></div>
);
}
});
vs
var test = React.createClass({
componentDidUpdate: function(prevProp, prevState){
this.refs.test.innerHTML = "Hello";
},
render: function(){
return (
<div contentEditable='true' ref='test'></div>
);
}
});
sto facendo qualcosa di un po 'più complicata di quanto l'esempio precedente, ma l'idea generale è la stessa
Ho scritto un piccolo test di valutazione non scientifico per mostrare la differenza tra l'inclusione di un file SVG e l'utilizzo di 'dangerouslySetInnerHTML': https://www.webpackbin.com/bins/-KepHa-AMxQgGxOUnAac: il metodo innerHTML è esternalizzato quasi due volte più veloce (vedi console nel webpackbin) – Joscha
Questo è vero e facile da prevedere. Poiché innerHTML è un metodo nativo che associa il codice SVG direttamente al DOM senza considerare nulla. D'altra parte, pericolosamenteSetInnerHTML è il metodo che viene da React che il codice SVG deve essere analizzato come figlio React Component prima di metterli in DOM virtuale e quindi renderizzare nel DOM. – Up209d