Подтвердить что ты не робот

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
      );
    }
  });
}
4b9b3361

Ответ 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().