Recibo este error:
Error no detectado: Infracción invariable: El tipo de elemento no es válido: se esperaba una cadena (para componentes integrados) o una clase / función (para componentes compuestos) pero se obtuvo: objeto.
Este es mi código:
var React = require('react')
var ReactDOM = require('react-dom')
var Router = require('react-router')
var Route = Router.Route
var Link = Router.Link
var App = React.createClass({
render() {
return (
<div>
<h1>App</h1>
<ul>
<li><Link to="/about">About</Link></li>
</ul>
</div>
)
}
})
var About = require('./components/Home')
ReactDOM.render((
<Router>
<Route path="/" component={App}>
<Route path="about" component={About} />
</Route>
</Router>
), document.body)
Mi Home.jsx
archivo:
var React = require('react');
var RaisedButton = require('material-ui/lib/raised-button');
var Home = React.createClass({
render:function() {
return (
<RaisedButton label="Default" />
);
},
});
module.exports = Home;
reactjs
react-router
Pankaj Thakur
fuente
fuente
Respuestas:
En mi caso ( usando Webpack ) fue la diferencia entre:
vs
El segundo funciona mientras que el primero está causando el error. O lo contrario.
fuente
<TabBarIOS.item>
a<TabBarIOS.Item>
necesita exportar por defecto o requiere (ruta) .default
fuente
export default
declaraciones esexports.default
lo que debe usar.default
cuando importa el módulo. Una forma de deshacerse de eso es usar babel-plugin-add-module-exports que restaura el comportamiento predeterminado.¿Acabas de modularizar alguno de tus componentes React? En caso afirmativo, obtendrá este error si olvidó especificar module.exports , por ejemplo:
componente / código no modularizado previamente válido:
componente / código modularizado con módulo . exportaciones :
fuente
module.exports = YourReactComponent
export default class YourReactComponent extends React.Component {
module.exports
todavía recibo el errorSi recibe este error, puede deberse a que está importando un enlace utilizando
import { Link } from 'react-router'
en cambio, podría ser mejor usar
Creo que este es un requisito para la versión 4 del router react
fuente
react
, en lugar dereact-router-dom
. Solucionado el problema. Nunca he visto este mensaje de error antes.https://github.com/rackt/react-router/blob/e7c6f3d848e55dda11595447928e843d39bed0eb/examples/query-params/app.js#L4
Router
también es una de las propiedades dereact-router
. Así que cambie sus módulos requieren un código como ese:Si desea usar la sintaxis ES6, use el enlace (
import
), use babel como ayudante.Por cierto, para hacer sus obras de código, podemos añadir
{this.props.children}
en elApp
, al igualfuente
No se sorprenda con la lista de respuestas para una sola pregunta. Hay varias causas para este problema;
Para mi caso, la advertencia fue
Seguido por el error
No pude entender el error ya que no menciona ningún método o nombre de archivo. Pude resolver solo después de mirar esta advertencia, mencionada anteriormente.
Tengo la siguiente línea en index.js.
Cuando busqué en Google el error anterior con la palabra clave "ConnectedRouter" , encontré la solución en una página de GitHub.
El error se debe a que, cuando instalamos el
react-router-redux
paquete, por defecto lo instalamos. https://github.com/reactjs/react-router-redux pero no la biblioteca real.Para resolver este error, instale el paquete adecuado especificando el alcance npm con
@
No necesita eliminar el paquete instalado incorrectamente. Se sobrescribirá automáticamente.
Gracias.
PD: incluso la advertencia te ayuda. No descuides la advertencia solo mirando el error solo.
fuente
En mi caso, uno de los módulos secundarios exportados no devolvía un componente de reacción adecuado.
en vez de
El error que se muestra fue para el padre, por lo tanto no se pudo resolver.
fuente
En mi caso, eso fue causado por símbolos de comentarios incorrectos. Esto está mal:
Esto es correcto:
Observe las llaves
fuente
Tengo el mismo error: ERROR FIX !!!!
Uso 'react-router-redux' v4 pero es mala. Después de instalar npm react-router-redux @ next estoy en "react-router-redux": "^ 5.0.0-alpha.9",
Y ES TRABAJO
fuente
Obtuve esto al
import App from './app/';
esperar que se importe./app/index.js
, pero en su lugar se importó./app.json
.fuente
Estaba teniendo el mismo problema y me di cuenta de que estaba proporcionando un componente Reacción indefinida en el marcado JSX. ¡La cuestión es que el componente de reacción para renderizar se calculó dinámicamente y terminó siendo indefinido!
El error declaró:
El ejemplo que produce este error:
El problema fue que se proporcionó un "uiType" no válido y, por lo tanto, esto estaba produciendo indefinido como resultado:
fuente
const MyComponent = () => <div>my component</div>;
solo para ver si las importaciones funcionan normalmente en ese momento.Solo como una rápida adición a esto. Estaba teniendo el mismo problema y mientras Webpack estaba compilando mis pruebas y la aplicación funcionaba bien. Cuando estaba importando mi componente al archivo de prueba, estaba usando el caso incorrecto en una de las importaciones y eso estaba causando el mismo error.
Debería haber sido
Tenga en cuenta que el nombre de importación
myComponent
depende del nombre de la exportación dentro delMyComponent
archivo.fuente
Tuve un problema similar con las últimas versiones de React Native 0.50 y posteriores.
Para mí fue una diferencia entre:
y
(este último solucionó el problema). Me tomó horas captar este extraño, difícil de notar matiz :(
fuente
Otra posible solución, que funcionó para mí:
Actualmente,
react-router-redux
está en beta y npm devuelve 4.x, pero no 5.x. Pero el@types/react-router-redux
regreso 5.x. Por lo tanto, se utilizaron variables indefinidas.Obligar a NPM / Yarn a usar 5.x lo resolvió para mí.
fuente
Dado su error de:
'Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object'
Tienes 2 opciones:
Su archivo de exportación puede tener la palabra
default
como enexport default class ____....
Entonces su importación deberá evitar su uso{}
. Como enimport ____ from ____
Evite usar la palabra predeterminada. Entonces su exportación se ve así.
export class ____...
Luego, su importación debe usar el{}
. Me gustaimport {____} from ____
fuente
export default {component name}
y olvidé agregarloEn mi caso, la importación estaba sucediendo implícitamente debido a una biblioteca.
Logré arreglarlo cambiando
export class Foo
a
export default class Foo
.fuente
Me encontré con este error cuando tenía un archivo .jsx y .scss en el mismo directorio con el mismo nombre raíz.
Entonces, por ejemplo, si tiene
Component.jsx
y estáComponent.scss
en la misma carpeta e intenta hacer esto:import Component from ./Component
Webpack aparentemente se confunde y, al menos en mi caso, trata de importar el archivo scss cuando realmente quiero el archivo .jsx.
Pude solucionarlo cambiando el nombre del archivo .scss y evitando la ambigüedad. También podría haber importado explícitamente Component.jsx
fuente
Y en mi caso, solo faltaba un punto y coma en la declinación de importación en uno de mis submódulos.
Se solucionó cambiando esto:
a esto:
fuente
En mi caso, estaba usando la exportación predeterminada, pero no exportaba una
function
oReact.Component
, sino solo unaJSX
elemento, es decir,Error:
Trabajos :
fuente
Además de
import
/export
problemas mencionados. Encontré que usarReact.cloneElement()
para agregarprops
a un elemento secundario y luego representarlo me dio el mismo error.Tuve que cambiar:
a:
Vea los
React.cloneElement()
documentos para más información.fuente
Recibí este error en el enrutamiento de reacción, el problema era que estaba usando
<Route path="/" component={<Home/>} exact />
pero era una ruta incorrecta requiere componente como clase / función, así que lo cambié a
<Route path="/" component={Home} exact />
Y funcionó. (Solo evite las llaves alrededor del componente)
fuente
Para mí fue que mis componentes con estilo se definieron después de la definición de mi componente funcional. Solo estaba sucediendo en la puesta en escena y no localmente para mí. Una vez que moví mis componentes con estilo sobre mi definición de componente, el error desapareció.
fuente
Significa que algunos de sus componentes importados se declaran incorrectamente o no existen
Tuve un problema similar, lo hice
pero cuando busqué en el archivo Compartido no tenía un componente 'Imagen' sino un Componente 'ItemImage'
Esto sucede cuando copia el código de otros proyectos;)
fuente
Tuve un problema con
React.Fragment
, porque la versión de mi reacción era< 16.2
, así que me deshice de ella.fuente
@Balasubramani M me salvó aquí. Quería agregar uno más para ayudar a las personas. Este es el problema cuando estás pegando demasiadas cosas y siendo arrogante con las versiones. Actualicé una versión de material-ui y necesito cambiar
a esto:
fuente
Tuve el mismo problema y el problema fue que algunos archivos js no se incluyeron en el paquete de esa página específica. Intente incluir esos archivos y el problema podría solucionarse. Hice esto:
y me solucionó el problema.
Esto fue mientras estaba usando React en Dot NEt MVC
fuente
He descubierto otra razón para este error. Tiene que ver con el CSS-in-JS que devuelve un valor nulo al JSX de nivel superior de la función de retorno en un componente React.
Por ejemplo:
Recibiría esta advertencia:
Seguido de este error:
Descubrí que era porque no había CSS con el componente CSS-in-JS que estaba tratando de renderizar. Lo arreglé asegurándome de que se devolviera CSS y no de un valor nulo.
Por ejemplo:
fuente
Recibo casi el mismo error:
Intenté importar un componente funcional puro de otra biblioteca de nodos que mi equipo ha desarrollado. Para solucionarlo, tuve que cambiar a una importación absoluta (haciendo referencia a la ruta al componente interno
node_modules
) desdea
fuente
En mi caso, terminó siendo el componente externo importado de esta manera:
import React, { Component } from 'react';
y luego declaró como:
export default class MyOuterComponent extends Component {
donde un componente interno importó el React bare:
import React from 'react';
y punteado en él para la declaración:
export default class MyInnerComponent extends ReactComponent {
fuente
En mi caso, me llevó bastante tiempo buscar y comprobar muchas formas, pero solo lo solucioné de esta manera: elimine "{", "}" al importar un componente personalizado:
Mi manera equivocada fue:
Porque en el archivo orderDetail.js, exporté OrderDetail como la clase predeterminada:
fuente