Html-react-parser: Error: img es una etiqueta de elemento vacío y no debe tener `niños` ni usar` dangerouslySetInnerHTML`

Creado en 26 ago. 2016  ·  14Comentarios  ·  Fuente: remarkablemark/html-react-parser

¡Hola!

Gran complemento, realmente creo que esto será útil para lo que estoy trabajando.

Me di cuenta de que analizar cualquier elemento img provoca el error anterior. Esto también puede aplicarse a cualquier elemento que nunca debería tener elementos secundarios.

Una solución temporal es usar algo como esto:

const parserConfig = {
    replace: domNode => {
        if(domNode.type === DOM_TYPE_TAG && domNode.name === 'img') {
            return <img src={domNode.attribs.src} alt={domNode.attribs.alt} className={domNode.attribs.class} />;
        }
    }
};
bug

Comentario más útil

Me estaba encontrando con este problema porque estaba tratando de agregar niños a una etiqueta img ...

Todos 14 comentarios

Gracias por hacérmelo saber. ¿Tiene un ejemplo para que pueda reproducir este error?

¡Hola!
Puede reproducir esto con lo siguiente:
ReactDOM.render(Parser('<div><img src="" alt=""/></div>'), document.getElementById('root'));

¡Increíble gracias!

@ poacher2k Gracias por el ejemplo. Investigué el error y lo solucioné en el n. ° 16.

Pruebe npm update html-react-parser o npm install [email protected] y avíseme si esto elimina el error.

Eso lo solucionó, ¡gracias de nuevo! ¡Me alegra ver que también agregaste comprobaciones para otros elementos nulos!

¡Es genial escucharlo y de nada! 👍

@remarkablemark Todavía estoy enfrentando el problema y el código npm install [email protected] no está actualizado en esta versión.

@ vidit1 ¿Puede confirmar que instaló la versión latest ?

npm i html-react-parser<strong i="8">@latest</strong>

# or
npm i [email protected]

Luego verifique haciendo:

npm ls html-react-parser

@remarkablemark Actualicé la última versión html-react-parser y todavía tengo este problema. Mi El elemento está dentro de un componente material-ui.
<Drawer> <div className="alert" role="alert"> <img src="https://getbootstrap.com/assets/brand/bootstrap-solid.svg" width="30" height="30" className="d-inline-block align-top" alt=""> Bootstrap </img> </div> </Drawer>

@blueskysmart : Tienes el texto "Bootstrap" dentro de tu etiqueta img . Como dice el error, img es un elemento nulo y no puede tener hijos.

Consulte el comentario de @remarkablemark a continuación para obtener orientación sobre cómo solucionarlo.

@blueskysmart El comentario hecho por @ poacher2k es correcto. Puedes ver la reproducción de este error en este violín .

Okie, ya veo. Gracias.

Este error aparece también si solo intenta analizar esto:
<img src="img.jpg".>

Para que funcione, envuélvalo en un div:

<div>
<img src="img.jpg".>
</div>

Me estaba encontrando con este problema porque estaba tratando de agregar niños a una etiqueta img ...

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

linkelvin11 picture linkelvin11  ·  4Comentarios

alizeaiter picture alizeaiter  ·  3Comentarios

danielimmke picture danielimmke  ·  4Comentarios

ollie-o picture ollie-o  ·  3Comentarios

purp1eeeee picture purp1eeeee  ·  15Comentarios