【问题标题】:React-router: can't forward user to other page outside of componentReact-router:无法将用户转发到组件之外的其他页面
【发布时间】:2016-01-16 06:05:15
【问题描述】:

我将 React 0.13.3 与 react-router 1.0.0-rc3 一起使用。

我试图在登录/注销时将用户转发到不同的页面,但总是收到错误“_servicesRouterContainer2.default.get(...).transitionTo is not a function”。

我的代码如下所示(不相关部分省略):

在 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');
  }
};

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

我做错了什么?

【问题讨论】:

    标签: reactjs react-router


    【解决方案1】:

    React Router 1.0 不再使用transitionTo。请参阅Upgrade Guide,它将让您看到 0.13.x 和 1.0 之间的变化

    您应该将 History 模块与 React Router 1.0 一起使用来解决您的问题:

    this.history.pushState(null, path)
    

    请参阅transitions app 了解完整的使用示例。

    【讨论】:

    • 升级指南和过渡应用链接失效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-11
    • 2019-01-21
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2020-03-29
    相关资源
    最近更新 更多