1. ホーム
  2. ジャバスクリプト

[解決済み】ReactコンポーネントでHTML文字列を本物のHTMLとしてレンダリングする

2022-04-03 10:31:04

質問

以下は、私が試したことと、その失敗の経緯です。

これは動作します。

<div dangerouslySetInnerHTML={{ __html: "<h1>Hi there!</h1>" }} />

これはないですね。

<div dangerouslySetInnerHTML={{ __html: this.props.match.description }} />


description プロパティは、通常の HTML コンテンツの文字列です。しかし、何らかの理由でHTMLとしてではなく文字列としてレンダリングされます。

何かご提案はありますか?

解決方法は?

ノードに追加しようとしているテキストが、このようにエスケープされていないかどうか確認してください。

var prop = {
    match: {
        description: '&lt;h1&gt;Hi there!&lt;/h1&gt;'
    }
};

この代わりに

var prop = {
    match: {
        description: '<h1>Hi there!</h1>'
    }
};

が逃げたら、サーバーサイドから変換する必要があります。

ノードがエスケープされているため、テキストである

ノードがエスケープされていないため、dom ノードである。