Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memaparkan Rentetan HTML dengan Selamat dalam React Menggunakan dangerouslySetInnerHTML?

Bagaimana untuk Memaparkan Rentetan HTML dengan Selamat dalam React Menggunakan dangerouslySetInnerHTML?

Linda Hamilton
Lepaskan: 2024-11-15 00:34:02
asal
453 orang telah melayarinya

How to Safely Render HTML Strings in React Using dangerouslySetInnerHTML?

Memaparkan Rentetan HTML dengan Selamat sebagai HTML

Dalam senario ini, isu timbul apabila cuba memaparkan rentetan kandungan HTML biasa, tetapi ia sebaliknya muncul sebagai rentetan tanpa ditafsirkan sebagai HTML. Ini biasanya ditemui apabila sifat yang digunakan dalam dangerouslySetInnerHTML ialah objek dan bukannya rentetan.

Untuk menyelesaikan masalah ini, pastikan sifat this.props.match.description ialah rentetan. Jika tidak, tukarkannya kepada HTML sebelum menyerahkannya kepada harta.

Mengendalikan Entiti HTML

Komplikasi tambahan timbul apabila berurusan dengan entiti HTML. Dalam kes sedemikian, anda perlu menyahkod entiti sebelum menghantarnya kepada dangerouslySetInnerHTML.

Contoh Kod

Pertimbangkan contoh kod berikut:

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'));
Salin selepas log masuk

Dalam contoh ini, sifat perihalan mengandungi entiti HTML (< dan >). Untuk memaparkannya dengan betul, fungsi htmlDecode digunakan untuk menyahkod entiti ini sebelum menghantar HTML kepada dangerouslySetInnerHTML.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Rentetan HTML dengan Selamat dalam React Menggunakan dangerouslySetInnerHTML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan