es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La actualización de la transformación JSX rompe React.

Estoy intentando actualizar a React 17 y usar el nuevo Transformador de JSX para evitar el import de React de import React from 'react'. Cuando elimino import React de un componente, la página se bloquea con un error (solo al renderizar ese componente).

React no está definido

Pensé que podría solucionarlo cambiando mi configuración de webpack:

json
// module > rules > use > options > presets
{
presets: [
['@babel/preset-react', { runtime: 'automatic' }]
]
}

(Antes solo era '@babel/preset-react' sin las opciones).

Después de compilar, me aparecen varios errores en la consola:

Advertencia: No se puede actualizar un componente mientras se está representando un componente diferente.

Advertencia: No se puede realizar una actualización de estado de React en un componente no montado.

Advertencia: No se puede actualizar durante una transición de estado existente (como dentro de ‘render’).

Error no capturado: Llamado de hook no válido. Los hooks solo se pueden llamar dentro del cuerpo de un componente de función.

La aplicación carga más o menos bien hasta que llega a la tabla de React, y luego ya no va más allá después del error de llamado de hook no válido.

He actualizado algunos paquetes para asegurarme de que estén en la versión correcta:

json
{
"@babel/core": "7.16.0",
"@babel/preset-env": "7.16.4",
"@babel/preset-react": "7.16.0",
"babel-loader": "8.2.3",
}

¿Alguna idea de por qué agregar { runtime: 'automatic' } estropea cómo funciona React?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Al actualizar a React 17 y usar la nueva Transformación de JSX, eliminar import React de un componente puede causar un error que indica que React no está definido. Para resolver este problema, se puede actualizar la configuración de webpack para incluir { runtime: 'automatic' } en las opciones de @babel/preset-react. Sin embargo, agregar esta opción puede causar varios errores en la consola, incluyendo advertencias sobre la actualización de un componente mientras se renderiza un componente diferente, un componente sin montar o durante una transición de estado existente. Además, puede ocurrir un error sobre llamadas de gancho inválidas. Estos errores pueden ser causados por otras dependencias que no están actualizadas a la versión correcta o pueden requerir más depuración.

Comments are closed.