我可以在Flux中使用动作来控制路线,怎么样?

时间:2015-03-05 10:32:14

标签: reactjs reactjs-flux react-router

我正在Flux中编写一个身份验证模块,actions:auth,auth_success,auth_error。我在想当动作auth_error发生时,路由器将转到' / login'。当action,action,auth_success发生时,路由器将转到' / dashboard'。 但这似乎是错误的,因为行动只发给调度员。我不知道如何路由回调。也许检查商店价值?

1 个答案:

答案 0 :(得分:0)

对于instace,您必须使用Route.Navigation对象mixin您的React类

/** @jsx React.DOM */

var React = require('react');

var Router = require('react-router')
  , Navigation = Router.Navigation;

var UserStore = require('user-store');

var YourClass = module.exports = React.createClass({
  mixins:[Navigation], //This is very important

  getInitialState: function() {
    return {};
  },

  componentWillMount: function(){
    UserStore.addChangeListener(this._method);
  },
  componentWillUnmount: function(){
    UserStore.removeChangeListener(this._method);
  },

  render: function() {
    return (
      <div>
      </div>
    );
  },

  _method: function() {
    // From here you can call methods of Navigator Object
    this.transitionTo('SomeRouteName'); //This method will render the specified <Route>
  } 
});

有关详细信息,请查看 https://github.com/rackt/react-router/blob/master/docs/api/mixins/Navigation.md

为了更改路线并根据通量架构,您应该从您应该拥有的某个用户存储的回调中调用transitionTo

我在代码中添加了一个示例,您可以根据具体情况对其进行自定义。

快乐的编码!