如何使用react-router导航回最后一条路线?

时间:2015-11-18 08:34:14

标签: javascript meteor react-router meteor-accounts

我正在构建一个Meteor + React + Material-UI应用,我正在使用react-routermeteor-accounts-react-material-ui

meteor-accounts-react-material-ui的文档显示了使用FlowRouter指定成功登录后要调用的redirect函数的示例: <Accounts.ui.LoginFormSet redirect={handleLogin}/>

因为我不相信你可以使用react-router的路由将redirect属性传递给Accounts.ui.LoginFormSet组件:

Routes = React.createClass({  
  getInitialState: function() {
    return {};
  },
  render: function () {
    return (
      <Router history={browserHistory}>
        <Route name="home" path="/login" component={LoginWrapper}/>
      </Router>
    );
  }
});

我能弄清楚如何使用react-router重现这一点的最好方法是将Accounts.ui.LoginFormSet组件包装起来:

var LoginWrapper = React.createClass({
  handleLogin: function() {
    //what do I put in here?
  },
  render: function () {
    return (
        <Accounts.ui.LoginFormSet redirect={this.handleLogin}/>    
    );
  }
});

然而,我似乎无法弄清楚的是如何实际重定向到调用/login路由的最后一条路线(即推荐人)。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

感谢qnub on Github的回答,我设法解决了这个问题:

var LoginWrapper = React.createClass({
  handleLogin: function() {
      // redirect through ReactRouter if it have ability or through window:
      window.location.href = this.targetUrl;
  },
  render: function () {
    this.targetUrl = window.location.href; // save target URL from window on through ReactRouter if it have ability
    return (
        <Accounts.ui.LoginFormSet redirect={this.handleLogin}/>    
    );
  }
});