J'essaie d'utiliser le routeur de réaction, mais lorsque j'écris, un itinéraire simple ne fonctionne pas et la console affiche Uncaught TypeError: Impossible de lire la propriété 'toUpperCase' de non définie.
Sinon, quand j'utilise sans le react-router qui fonctionne bien
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);
L'erreur provient de cette ligne de la bibliothèque de réactions
function autoGenerateWrapperClass(type) {
return ReactClass.createClass({
tagName: type.toUpperCase(), //<----
render: function() {
return new ReactElement(
type,
null,
null,
null,
null,
this.props
);
}
});
}
Vous utilisez des exemples de la version 1.0 bêta de la documentation, mais vous utilisez probablement la dernière version stable (0.13). Les documents dans master proviennent de la version 1.0 bêta, ce qui est source de confusion.
Lisez la documentation de la dernière version stable: https://github.com/ReactTraining/react-router/tree/master/docs
Je suppose que lorsque React.render est exécuté, le routeur n’est pas encore là. essaye ça
var routes = (
<Route handler={App}>
</Route>
);
Router.run(routes,(Root) => {
React.render(<Root/>, document.body);
});
Je suis toujours en train de réfléchir, mais la première chose à vérifier est la version que vous utilisez et la documentation que vous utilisez. J'ai pu le faire fonctionner en procédant comme suit ...
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')
)
});
};
En gros, ce que PhInside a dit, mais enveloppé dans window.onload
Essayez <Route>
au lieu de <Router>
dans React.render()
.