![](/img/trans.png)
[英]Gettting React.createElement: type is invalid — expected a string … but got: undefined
[英]React 4 Router error = type is invalid expected string but got undefined
有一个非常简单的React问题,我正在尝试做一些简单的路由。 主页,个人资料页面,404页面。 但是,请保持相同的错误。
我的组件成功呈现后,它们的组件似乎正在工作,但是,当我尝试实现路由时,立即收到以下错误消息。
错误: Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of Root.
Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of Root.
我以前已经获得了像这样工作的路由(react router v 4.0.0),所以我不确定我在这里犯了什么错误。 向正确方向的任何推动将不胜感激。 提前致谢。
App.js
import React, { Component } from 'react';
import ReactDOM, { render } from 'react-dom';
import { BrowserRouter as Router, Match, Miss } from 'react-router';
//Components
import Home from './components/Home';
import Profile from './components/Profile';
import NotFound from './components/NotFound';
const Routes = () => {
return (
<Router>
<div>
<Match exactly pattern="/" component={Home} />
<Match exactly pattern="/profile/:profileId" component={Profile} />
<Miss component={NotFound} />
</div>
</Router>
)
}
render(<Routes />, document.querySelector('#container'));
家庭组件
import React, { Component } from 'react';
class Home extends Component {
render() {
return (
<p>Home Page</p>
)
}
}
export default Home;
配置文件组件
import React, { Component } from 'react';
class Profile extends Component {
render() {
return (
<p>Profile Page</p>
)
}
}
export default Profile;
的package.json
"dependencies": {
"html-webpack-plugin": "^2.28.0",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-router": "^4.1.1",
"webpack": "^2.5.1",
"webpack-dev-server": "^2.4.5"
},
"devDependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^7.0.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1"
}
在App.js中,您应该更改以下内容:
<Router>
<div>
<Match exactly pattern="/" component={Home} />
<Match exactly pattern="/profile/:profileId" component={Profile} />
<Miss component={NotFound} />
</div>
</Router>
对此
<Router>
<Switch>
<Route path="/" exact component={Home} />
<Route path="/profile/:profileId" exact component={Profile}" />
<Route component={NotFound} />
</Switch>
</Router>
当其中一个已渲染时,使用Switch元素停止验证其他路由。
并且不要忘记从react-router-dom
而不是react-router
导入这些模块( Route
, Switch
和BrowserRouter
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.