react-router 总是路由到 'NotFoundRoute'
react-router always routes to 'NotFoundRoute'
我已经有几个月的反应了。爱它。今天刚拿到 react-router。这看起来棒极了而且直截了当,但我的路线就是没有连接。
我正在构建一个带有 header 的单页应用程序,该应用程序具有三个通用 React 组件和一个用于主要内容的容器。发生的事情是路线根本就没有命中。我在那里放了一个 notfoundroute 只是为了确认并抓住未命中的地方。我总是在 NotFoundRoute 上结束。谁能指出我遗漏的任何明显的东西?我的 f/:formName 路由有查询字符串参数,但我的仪表板没有,我不认为这会影响,但是...仅供参考。
...
//===================== SPA components ============================//
var ObjectForm = require('./components/form.react');
var Dashboard = require('./components/dashboard.react');
var NotFound = require('./components/notFound.react');
...
//===================== SPA container and router ============================//
var App = React.createClass({
getInitialState: function(){
console.log("getInitialState");
storeManager.appInit();
return null;
},
render: function(){
return (<RouteHandler/>);
}
});
//===================== Universal components (always accessible on any page in the application) ============================//
//menu
React.render(
<MainMenu />,
document.getElementById('mainMenuContainer')
);
//bucket
React.render(
<BucketList />,
document.getElementById('bucketList')
);
//search
React.render(
<InstantBox />,
document.getElementById('globalSearchForm')
);
//===================== application routes (apply to SPA mounted into appContent div) ============================//
var routes = (
<Route name="App" path="/" handler={App}>
<Route name="Dashboard" path="dashboard" handler={Dashboard}/>
<Route name="ObjectForm" path="f/:formName" handler={ObjectForm}/>
<NotFoundRoute handler={NotFound}/>
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
对于任何想知道的人,Router.run 中似乎需要 Router.HistoryLocation。不是根据 github 上的文档,但是......任何人都可以澄清文档是否不是最新的或者为什么 Router.HistoryLocation 的遗漏会破坏路由器?我很想知道发生了什么事。
综上所述,使用:
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
而不是:
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
另请参阅:React Router 0.11.1 routes all requests to Home
我已经有几个月的反应了。爱它。今天刚拿到 react-router。这看起来棒极了而且直截了当,但我的路线就是没有连接。
我正在构建一个带有 header 的单页应用程序,该应用程序具有三个通用 React 组件和一个用于主要内容的容器。发生的事情是路线根本就没有命中。我在那里放了一个 notfoundroute 只是为了确认并抓住未命中的地方。我总是在 NotFoundRoute 上结束。谁能指出我遗漏的任何明显的东西?我的 f/:formName 路由有查询字符串参数,但我的仪表板没有,我不认为这会影响,但是...仅供参考。
...
//===================== SPA components ============================//
var ObjectForm = require('./components/form.react');
var Dashboard = require('./components/dashboard.react');
var NotFound = require('./components/notFound.react');
...
//===================== SPA container and router ============================//
var App = React.createClass({
getInitialState: function(){
console.log("getInitialState");
storeManager.appInit();
return null;
},
render: function(){
return (<RouteHandler/>);
}
});
//===================== Universal components (always accessible on any page in the application) ============================//
//menu
React.render(
<MainMenu />,
document.getElementById('mainMenuContainer')
);
//bucket
React.render(
<BucketList />,
document.getElementById('bucketList')
);
//search
React.render(
<InstantBox />,
document.getElementById('globalSearchForm')
);
//===================== application routes (apply to SPA mounted into appContent div) ============================//
var routes = (
<Route name="App" path="/" handler={App}>
<Route name="Dashboard" path="dashboard" handler={Dashboard}/>
<Route name="ObjectForm" path="f/:formName" handler={ObjectForm}/>
<NotFoundRoute handler={NotFound}/>
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
对于任何想知道的人,Router.run 中似乎需要 Router.HistoryLocation。不是根据 github 上的文档,但是......任何人都可以澄清文档是否不是最新的或者为什么 Router.HistoryLocation 的遗漏会破坏路由器?我很想知道发生了什么事。
综上所述,使用:
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
而不是:
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('appContent'));
});
另请参阅:React Router 0.11.1 routes all requests to Home