如何使用React-router-component从ajax调用成功后重定向?

时间:2015-02-11 11:20:46

标签: reactjs reactjs-flux

我正在使用Facebook flux React JS架构构建应用程序。我已经构建了app的基本部分,我有一个登录表单。我从节点服务器获取结果以验证商店中的用户,我从服务器获得结果,现在我卡住了,如何在成功后将用户重定向到主页。

我已阅读有关react路由器组件的信息,我可以在客户端重定向,但在从Store中的ajax获取结果时无法重定向。请帮我。

3 个答案:

答案 0 :(得分:9)

您需要使用transitionTo mixin:http://git.io/NmYH中的Navigation功能。它会是这样的:

// I don't know implementation details of the store,
// but let's assume it has `login` function that fetches
// user id from backend and then calls a callback with 
// this received id
var Store = require('my_store');
var Router = require('react-router');

var MyComponent = React.createClass({
  mixins: [Router.Navigation],

  onClick: function() {
    var self = this;
    Store.login(function(userId){
      self.transitionTo('dashboard', {id: userId});
    });
  },

  render: function() {
    return: <button onClick={this.onClick}>Get user id</button>;
  }
});

答案 1 :(得分:2)

当我向反应元素属性添加路由器的需求并使用路由器时,它对我有用:

// this is the redirect
    this.context.router.push('/search');

// this should appear outside the element
    LoginPage.contextTypes = {
        router: React.PropTypes.object.isRequired
    };
    module.exports = LoginPage;

答案 2 :(得分:1)

这应该有效

var Store = require('Store');
var Navigatable = require('react-router-component').NavigatableMixin

var LoginComponent = React.createClass({
    mixins: [ Navigatable ],

    onClick: function() {
        Store.login(function(userId){
            this.navigate('/user/' + userId)
        }.bind(this));
    },

    render: function() {
        return <button onClick={this.onClick}>Login</button>;
    }
});