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