"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como renderizar strings HTML com segurança no React usando perigosamenteSetInnerHTML?

Como renderizar strings HTML com segurança no React usando perigosamenteSetInnerHTML?

Publicado em 2024-11-18
Navegar:998

How to Safely Render HTML Strings in React Using dangerouslySetInnerHTML?

Renderização segura de strings HTML como HTML

Nesse cenário, o problema surge ao tentar renderizar uma string normal de conteúdo HTML, mas em vez disso, aparece como uma string sem ser interpretada como HTML. Isso normalmente é encontrado quando a propriedade usada em perigosalySetInnerHTML é um objeto em vez de uma string.

Para resolver isso, certifique-se de que a propriedade this.props.match.description seja uma string. Caso contrário, converta-o para HTML antes de atribuí-lo à propriedade.

Tratamento de entidades HTML

Surgem complicações adicionais ao lidar com entidades HTML. Nesses casos, você precisará decodificar as entidades antes de passá-las para perigosamenteSetInnerHTML.

Código de exemplo

Considere o seguinte código de exemplo:

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      description: '

Our Opportunity:

', }; } htmlDecode(input) { const e = document.createElement('div'); e.innerHTML = input; return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue; } render() { return (
); } } ReactDOM.render(, document.getElementById('root'));

Neste exemplo, a propriedade description contém entidades HTML (). Para renderizá-lo corretamente, a função htmlDecode é usada para decodificar essas entidades antes de passar o HTML para perigosamenteSetInnerHTML.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3