React-router:无法将用户转发到组件

时间:2015-10-17 15:20:18

标签: reactjs react-router

我使用React 0.13.3和react-router 1.0.0-rc3。

我试图在登录/注销时将用户转发到另一个页面,但总是得到错误" _servicesRouterContainer2.default.get(...)。transitionTo不是函数"。

我的代码看起来像这样(省略了相关部分):

在app.js中我设置了路线:

import { Router, Route } from 'react-router';
import RouterContainer from './services/RouterContainer';

let routes = (
  <Router>
    <Route path="/" component={Master}>
      <Route path="some-component" component={SomeComponent}/>
      <Route path="login" component={LoggedOut}/>
      <Route path="*" component={ErrorPage}/>
    </Route>
  </Router>
);
RouterContainer.set(routes);

React.render(RouterContainer.get(), document.body);

然后将路由存储在RouterContainer中:

var _router = null;
export default {
  set: (router) => _router = router,
  get: () => _router
};

现在我尝试在调用LoginActions.loginUser / LoginActions.logoutUser时将用户转换到其他页面:

import RouterContainer from '../services/RouterContainer';

export default {
  loginUser: (response) => {
    ...

    let nextPath = RouterContainer.get().getCurrentQuery().nextPath || '/';
    RouterContainer.get().transitionTo(nextPath);
  },

  logoutUser: () => {
    ...

    RouterContainer.get().transitionTo('login');
  }
};

转换不起作用,我的控制台显示错误&#34; _servicesRouterContainer2.default.get(...)。transitionTo不是函数&#34;。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

React Router 1.0不再使用this.history.pushState(null, path) 。请参阅Upgrade Guide,它可以让您看到0.13.x和1.0之间的变化

您应该使用历史记录模块和React Router 1.0来解决您的问题:

var str = '2x^2-14x+5';
var re = /([+-]?\d{1,4})/g;
var result = str.match(re);

有关完整的使用示例,请参阅transitions app