HTML 文字列を実際の HTML としてレンダリングする
HTML コンテンツを実際の HTML として表示しようとすると、特定のシナリオでは、文字列がHTML として解釈されるのではなく、テキストとしてレンダリングされます。この問題に対処するには、HTML 文字列を二重引用符で囲み、必要に応じてデコードすることが重要です。
これを解決する 1 つの方法は、次のように、dangerlySetInnerHTML プロパティ内で HTML 文字列を二重引用符で囲むことです。次の例で示します:
<div dangerouslySetInnerHTML={{ __html: '" <h1>Hi there!</h1>" ' }} />
ただし、HTML 文字列がオブジェクトとして保存されている場合、HTML としてレンダリングされません。このような場合、オブジェクトは、dangerlySetInnerHTML に割り当てる前に文字列に変換する必要があります。
class App extends React.Component { constructor() { super(); this.state = { description: { children: "something", style: { color: "red" } } } } render() { return ( <div dangerouslySetInnerHTML={{ __html: JSON.stringify(this.state.description) }} /> ); } } ReactDOM.render(<App />, document.getElementById('root'));
さらに、HTML 文字列内の HTML エンティティを扱う場合は、dangerlySetInnerHTML に割り当てる前にエンティティをデコードすることが重要です。 。これは、htmlDecode 関数を使用して実現できます:
class App extends React.Component { constructor() { super(); this.state = { description: '<p>&lt;strong&gt;Our Opportunity:&lt;/strong&gt;</p>' } } htmlDecode(input){ var e = document.createElement('div'); e.innerHTML = input; return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; } render() { return ( <div dangerouslySetInnerHTML={{ __html: this.htmlDecode(this.state.description) }} /> ); } } ReactDOM.render(<App />, document.getElementById('root'));
以上がReact で HTML 文字列を適切にレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。