簡體   English   中英

react-router Uncaught TypeError:無法讀取未定義的屬性'toUpperCase'

[英]react-router Uncaught TypeError: Cannot read property 'toUpperCase' of undefined

我正在嘗試使用react-router,但是當我編寫一個簡單的路由不起作用並且控制台顯示Uncaught TypeError時:無法讀取未定義的屬性'toUpperCase'。

否則當我使用沒有反應路由器運行良好

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.0 Beta文檔中的示例,但您可能正在運行最新的穩定版本(0.13)。 主人的文檔來自1.0 Beta,這是混亂的根源。

閱讀最新穩定版的文檔: https//github.com/ReactTraining/react-router/tree/master/docs

我的猜測是當React.render執行時,路由器還沒有。 試試這個

 var routes = (
  <Route handler={App}>
  </Route>
);

Router.run(routes,(Root) => {
  React.render(<Root/>, document.body);
});

我仍然圍繞反應路由器,但我要檢查的第一件事是你正在使用的版本和你引用的文檔。 通過以下方式我能夠讓它工作......

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中

React.render()嘗試<Route>而不是<Router>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM