我正在尝试使用react-router,但当我编写一条简单的路由时,它不能工作,控制台显示Uncaught : Cannot read property 'toUpperCase‘of undefined。
否则,当我不使用工作正常的react-router时
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);
该错误来自react库的此行
function autoGenerateWrapperClass(type) {
return ReactClass.createClass({
tagName: type.toUpperCase(), //<----
render: function() {
return new ReactElement(
type,
null,
null,
null,
null,
this.props
);
}
});
}
发布于 2015-07-18 20:38:17
您使用的是1.0 Beta文档中的示例,但您可能运行的是最新的稳定版本(0.13)。master中的文档来自1.0测试版,这是造成混淆的原因。
阅读文档以获取最新的稳定版本:https://github.com/ReactTraining/react-router/tree/master/docs
发布于 2015-06-23 06:48:46
我的猜测是当React.render被执行时,路由器还不在那里。尝尝这个
var routes = (
<Route handler={App}>
</Route>
);
Router.run(routes,(Root) => {
React.render(<Root/>, document.body);
});
发布于 2015-07-05 01:00:25
我还在考虑react-router,但是我要检查的第一件事是你使用的版本和你引用的文档。我能够让它工作,通过执行以下操作...
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中
https://stackoverflow.com/questions/30990726
复制相似问题