私はリアクションに慣れていて、次の状況を処理する正しい方法がわからない:Reactで第三者のDOM操作を処理する方法は?
コードをレンダリングするコンポーネントを作成し、Highlight.jsを使用して構文を強調表示しました。
これはうまくいったものの、コンテンツが更新されたときに壊れました。
class CodeBox extends React.Component {
componentDidMount() {
this.highlight();
}
componentDidUpdate() {
this.highlight();
}
highlight() {
hljs.highlightBlock(this.elem);
}
render() {
return (
<pre><code ref={(elem) => { this.elem = elem }}>{this.props.code}</code></pre>
);
}
}
私の理解では、code
ノードを扱う反応することがあり、そしてHighlight.jsがそれを改ざんする場合が好き...私はこれに頼っていません。今
class CodeBox extends React.Component {
componentDidMount() {
this.highlight();
}
componentDidUpdate() {
this.highlight();
}
highlight() {
this.elem.innerHTML = "";
let c = document.createElement("code");
c.innerHTML = this.props.code;
this.elem.appendChild(c);
hljs.highlightBlock(c);
}
render() {
return (
<pre ref={(elem) => { this.elem = elem }}></pre>
);
}
}
働くが、私はReactを間違って使っているような気がする。
domを直接操作する必要がない方法はありますか?
ありがとう、それは私が探していたものです! –