Les développeurs React rencontrent fréquemment l'erreur "Erreur non détectée : violation invariante : Le type d'élément n'est pas valide : il s'agit d'une chaîne attendue (pour les composants intégrés) ou d'une classe/fonction (pour les composants composites) mais j'ai obtenu : un objet." Cette erreur déroutante provient d'un problème avec le type d'élément transmis aux composants React.
Considérez le code suivant extraits :
main.js :
import React from 'react'; import ReactDOM from 'react-dom'; import Router from 'react-router'; import App from './components/App'; import About from './components/About'; ReactDOM.render(( <Router> <Route path="/" component={App}> <Route path="about" component={About} /> </Route> </Router> ), document.body);
À propos de.jsx :
import React from 'react'; import RaisedButton from 'material-ui/lib/raised-button'; export default class About extends React.Component { render() { return ( <RaisedButton label="Default" /> ); } };
Dans ce cas, l'erreur était due à une divergence dans l'instruction d'importation du composant Home dans main.js. L'utilisation de import {MyComponent} from '../components/xyz.js' au lieu d'import MyComponent from '../components/xyz.js' a entraîné l'erreur. Cette différence dans la syntaxe d'importation peut amener React à interpréter incorrectement le composant importé, entraînant l'erreur « Type d'élément non valide ».
Pour résoudre le problème, assurez-vous que la syntaxe d'importation correcte est utilisé pour le composant. Dans les environnements Webpack, cela signifie utiliser :
import MyComponent from '../components/xyz.js';
Cette syntaxe importe le composant comme exportation par défaut, ce qui est le comportement attendu pour les composants React.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!