要素のinnerHTMLを設定してから要素のdangerouslySetInnerHTMLプロパティを設定することとの「舞台裏」の違いはありますか?簡単にするために、私が適切に衛生的に処理しているとします。React.js:innerHTMLとdangerouslySetInnerHTMLを設定します
例:
var test = React.createClass({
render: function(){
return (
<div contentEditable='true' dangerouslySetInnerHTML={{ __html: "Hello" }}></div>
);
}
});
対
var test = React.createClass({
componentDidUpdate: function(prevProp, prevState){
this.refs.test.innerHTML = "Hello";
},
render: function(){
return (
<div contentEditable='true' ref='test'></div>
);
}
});
私は上記の例よりも少し複雑な何かをやっているが、全体的なアイデアは、に基づいて、同じ
私はSVGのインライン化と 'dangerouslySetInnerHTML'の使用の違いを示すために、非科学的な小さなパーフォーマンステストを書いています:https://www.webpackbin.com/bins/-KepHa-AMxQgGxOUnAac - innerHTMLメソッドのチューンはほぼ2倍の速さです(webpackbinのコンソールを参照してください) – Joscha
これは真実で予測が簡単です。 innerHTMLは、何も考慮せずにSVGコードを直接DOMにバインドするネイティブメソッドです。一方、dangerouslySetInnerHTMLは、SVGコードをReact Componentの子として構文解析してから、それらを仮想DOMに配置してからDOMにレンダリングする必要があるというReactのメソッドです。 – Up209d