Ответ 1
Вы не передаете историю своим <Router>
.
Ознакомьтесь с историей документации для получения дополнительной информации.
Я использую последнюю версию react-router
(версия ^ 3.0.0).
Я написал следующую маршрутизацию с помощью ES5:
routes.js
:
var React = require("react");
var Router = require("react-router");
var AuthorPage = require('./components/authors/authorPage')
var App = require('./components/app')
var Route = Router.Route;
var routes = (
<Route path="/" component={App}>
<Route path="authors" component={AuthorPage}/>
</Route>
);
module.exports = routes;
В другом JS файле с именем main.js
я выполняю следующий вызов:
main.js
:
var React= require("react");
var ReactDom = require("react-dom");
var Router = require('react-router').Router;
var routes = require('./routes');
ReactDom.render(<Router routes={routes}></Router>, document.getElementById('app'));
Когда я запускаю код, я получаю следующее исключение в инструментах разработчика Google Chrome:
Uncaught TypeError: невозможно прочитать свойство getCurrentLocation undefined
Почему? Что мне не хватает?
Вы не передаете историю своим <Router>
.
Ознакомьтесь с историей документации для получения дополнительной информации.
Имел ту же ошибку, решил ее так:
Добавить
var hashHistory = ReactRouter.hashHistory;
И в наборе Router история равна hashHistory
<Router history={hashHistory}>
Итак, в вашем случае:
var routes = (
<Router history={hashHistory}>
<Route path="/" component={App}>
<Route path="authors" component={AuthorPage}/>
</Route>
</Router>
);