Joe*_*hle 14 reactjs react-router
我一直在关注Tyler Mcginnis的教程,并对反应路由器,尤其是历史记录表示不满.我最后逐字复制他的代码只是为了看看它是否只有我,但我还是得到了
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.
Warning: Failed prop type: The prop `history` is marked as required in
`Router`, but its value is `undefined`. in Router
Uncaught TypeError: Cannot read property 'location' of undefined
at new Router (index_bundle.js:8347)
at index_bundle.js:19079
at measureLifeCyclePerf (index_bundle.js:18859)
at ReactCompositeComponentWrapper._constructComponentWithoutOwner (index_bundle.js:19078)
at ReactCompositeComponentWrapper._constructComponent (index_bundle.js:19064)
at ReactCompositeComponentWrapper.mountComponent (index_bundle.js:18972)
at Object.mountComponent (index_bundle.js:4070)
at ReactCompositeComponentWrapper.performInitialMount (index_bundle.js:19155)
at ReactCompositeComponentWrapper.mountComponent (index_bundle.js:19042)
at Object.mountComponent (index_bundle.js:4070)
Run Code Online (Sandbox Code Playgroud)
实施是:
var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var hashHistory = ReactRouter.hashHistory;
var IndexRoute = ReactRouter.IndexRoute;
var Main = require('../components/Main');
var Home = require("../components/Home");
var PromptContainer = require('../containers/PromptContainer');
var routes = (
<Router history={hashHistory}>
<Route path='/' component={Main}>
<IndexRoute component={Home} />
<Route path='playerOne' header='Player One' component={PromptContainer} />
<Route path='playerTwo/:playerOne' header='Player Two' component={PromptContainer} />
</Route>
</Router>
);
module.exports = routes;
Run Code Online (Sandbox Code Playgroud)
我注意到的是模块hashHistory中不存在react-router,而是模块createBrowserHistory内部存在history.按照我发现的API文档,我想我必须通过那里调用它:
var BrowserHistory = require('history/createBrowserHistory);
const history = createBrowserHistory();
Run Code Online (Sandbox Code Playgroud)
这样做会产生createBrowserHistory is not a function错误.删除paranthesis,导致上述历史记录相同的错误undefined.
当我记录历史记录时,它肯定是未定义的,这让我相信这个问题与import语句有关,但是控制台告诉我ReactRouter.hashHistory无法找到它吗?
我知道这个教程已经有一年了,我可能还没有注意到API的变化,这就是我的问题所在.任何帮助表示赞赏!
Nic*_*las 33
路由器v4有点不同
HashHistory
import { HashRouter as Router, Route } from 'react-router-dom';
import App from './components/App';
render((
<Router>
<Route exact path="/" component={App} />
</Router> ),
document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
要么 BrowserHistory
import { BrowserRouter as Router, Route } from 'react-router-dom';
import App from './components/App';
render((
<Router>
<Route exact path="/" component={App} />
</Router> ),
document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15715 次 |
| 最近记录: |