Response-router Uncaught TypeError: Не удается прочитать свойство 'toUpperCase' undefined
Я пытаюсь использовать реактивный маршрутизатор, но когда я пишу простой маршрут, не работает, а консоль показывает Uncaught TypeError: не удается прочитать свойство 'toUpperCase' из undefined.
В противном случае, когда я использую без реагирующего маршрутизатора, который хорошо работает
var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var App = React.createClass({
render: function () {
return (
<div>Hello World</div>
);
}
});
React.render((
<Router>
<Route path="/" component={App} />
</Router>
), document.body);
Ошибка из этой строки библиотеки ответов
function autoGenerateWrapperClass(type) {
return ReactClass.createClass({
tagName: type.toUpperCase(), //<----
render: function() {
return new ReactElement(
type,
null,
null,
null,
null,
this.props
);
}
});
}
Ответы
Ответ 1
Вы используете примеры из 1.0 бета-документов, но, скорее всего, вы используете последнюю стабильную версию (0.13). Документы в master от 1.0 Beta, которые являются источником путаницы.
Прочитайте документы для последней стабильной версии: https://github.com/ReactTraining/react-router/tree/master/docs
Ответ 2
Я предполагаю, что когда React.render выполняется, маршрутизатор еще не существует. попробуйте это
var routes = (
<Route handler={App}>
</Route>
);
Router.run(routes,(Root) => {
React.render(<Root/>, document.body);
});
Ответ 3
Я все еще обертываю голову вокруг реактивного маршрутизатора, но первое, что я проверил, это версия, которую вы используете, и документы, на которые вы ссылаетесь. Я смог заставить его работать, выполняя следующие действия...
var React = require('react');
var ReactRouter = require('react-router');
var Route = ReactRouter.Route;
var App = React.createClass({
render: function () {
return (
<div>Hello World</div>
);
}
});
var routes = (
<Route handler={App}>
</Route>
);
window.onload = function() {
ReactRouter.run(routes, ReactRouter.HistoryLocation, function(Root, state) {
React.render(
<Root />,
document.getElementById('main')
)
});
};
В принципе, что PhInside сказал, но завернутый в window.onload
Ответ 4
Попробуйте <Route>
вместо <Router>
в React.render()
.