Eu recomendo usar o Interweave criado por milesj . É uma biblioteca fenomenal que utiliza um número de técnicas engenhosas para analisar e inserir HTML com segurança no DOM.
O Interweave é uma biblioteca de reação para renderizar HTML com segurança, filtrar atributos, copiar automaticamente texto com correspondências, renderizar caracteres emoji e muito mais.
- O Interweave é uma biblioteca robusta do React que pode:
- Renderize HTML com segurança sem usar o DangerouslySetInnerHTML.
- Retire com segurança as tags HTML.
- Proteção automática contra XSS e injeção.
- Limpe os atributos HTML usando filtros.
- Interpole componentes usando matchers.
- URLs, IPs, emails e hashtags de link automático.
- Renderize caracteres Emoji e emoticon.
- E muito mais!
Exemplo de uso:
import React from 'react';
import { Markup } from 'interweave';
const articleContent = "<p><b>Lorem ipsum dolor laboriosam.</b> </p><p>Facere debitis impedit doloremque eveniet eligendi reiciendis <u>ratione obcaecati repellendus</u> culpa? Blanditiis enim cum tenetur non rem, atque, earum quis, reprehenderit accusantium iure quas beatae.</p><p>Lorem ipsum dolor sit amet <a href='#testLink'>this is a link, click me</a> Sunt ducimus corrupti? Eveniet velit numquam deleniti, delectus <ol><li>reiciendis ratione obcaecati</li><li>repellendus culpa? Blanditiis enim</li><li>cum tenetur non rem, atque, earum quis,</li></ol>reprehenderit accusantium iure quas beatae.</p>"
<Markup content={articleContent} /> // this will take the articleContent string and convert it to HTML markup. See: https://milesj.gitbook.io/interweave
//to install package using npm, execute the command
npm install interweave