How to redirect after success from ajax call using React-router-component?

后端 未结 3 1265
臣服心动
臣服心动 2021-02-14 10:23

I am building a application using Facebook flux architecture of React JS. I have build the basic part of app where I have a login form. I am fetching t

相关标签:
3条回答
  • 2021-02-14 10:41

    It worked for me when I added to the react element properties a require for the router and used the router like this:

    // 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;
    
    0 讨论(0)
  • 2021-02-14 10:45

    You need to use the transitionTo function from the Navigation mixin: http://git.io/NmYH. It would be something like this:

    // 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>;
      }
    });
    
    0 讨论(0)
  • 2021-02-14 10:51

    This should work

    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>;
        }
    });
    
    0 讨论(0)
提交回复
热议问题