如何在 React-Router 路由器 Will Leave() 中获取 Redux 状态?

How to get Redux states in React-Router routerWillLeave()?

我正在尝试从 routerWillLeave() 中获取 Redux 状态 this.props。我正在使用装饰组件来添加生命周期。 this 引用了错误的内容,因此 this.props 未定义。我正在使用 react-router 1.0.0 rc4

@reactMixin.decorate(Lifecycle)
class AccountEditPage extends Component {

...

  routerWillLeave(nextLocation) {

    console.log(nextLocation);
    console.log(this.props);        

    const pattern = /accounts\/\d\/edit/i;

    if(!nextLocation.pathname.match(pattern)){
     return 'Your work is not saved! Are you sure you want to leave?';
   }
}

这是一个小的抽象破损。您现在只需要在构造函数中或通过 属性 初始化程序绑定 routerWillLeave。以后我们可能会尝试对此进行改进API。

这里有一段代码可以跟进 Taion 的正确答案。

es6 构造函数中的示例:

@reactMixin.decorate(Lifecycle)
class MyComponent extends React.Component {

  constructor(props) {

    /* ... */

    this.routerWillLeave = this.routerWillLeave.bind(this);  //bind the function to this scope
  }

  routerWillLeave(nextLocation) {
    console.log(this.props);
  }
}