Heim > Web-Frontend > js-Tutorial > Wie rendere ich HTML-Strings in React sicher mit dangerouslySetInnerHTML?

Wie rendere ich HTML-Strings in React sicher mit dangerouslySetInnerHTML?

Linda Hamilton
Freigeben: 2024-11-15 00:34:02
Original
510 Leute haben es durchsucht

How to Safely Render HTML Strings in React Using dangerouslySetInnerHTML?

HTML-Zeichenfolgen sicher als HTML rendern

In diesem Szenario tritt das Problem auf, wenn versucht wird, eine normale Zeichenfolge mit HTML-Inhalten darzustellen, dies jedoch nicht der Fall ist erscheint stattdessen als String, ohne als HTML interpretiert zu werden. Dies tritt typischerweise dann auf, wenn die Eigenschaft, die in hazardlySetInnerHTML verwendet wird, ein Objekt und keine Zeichenfolge ist.

Um dieses Problem zu beheben, stellen Sie sicher, dass die Eigenschaft this.props.match.description eine Zeichenfolge ist. Ist dies nicht der Fall, konvertieren Sie es in HTML, bevor Sie es der Eigenschaft zuweisen.

Umgang mit HTML-Entitäten

Beim Umgang mit HTML-Entitäten treten zusätzliche Komplikationen auf. In solchen Fällen müssen Sie die Entitäten dekodieren, bevor Sie sie an hazardlySetInnerHTML übergeben.

Beispielcode

Bedenken Sie den folgenden Beispielcode:

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      description: '<p><strong>Our Opportunity:</strong></p>',
    };
  }

  htmlDecode(input) {
    const 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'));
Nach dem Login kopieren

In diesem Beispiel enthält die Beschreibungseigenschaft HTML-Entitäten (< und >). Um es korrekt darzustellen, wird die Funktion htmlDecode verwendet, um diese Entitäten zu dekodieren, bevor der HTML-Code an hazardlySetInnerHTML.

übergeben wird

Das obige ist der detaillierte Inhalt vonWie rendere ich HTML-Strings in React sicher mit dangerouslySetInnerHTML?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage