如何在React-Router routerWillLeave()中获取Redux状态?

时间:2015-11-03 18:40:27

标签: react-router redux

我正在尝试从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?';
   }
}

2 个答案:

答案 0 :(得分:2)

这是一个轻微的抽象破坏。您只需要在构造函数中绑定routerWillLeave,或者现在通过属性初始化程序绑定<div class="one-fifth"> 1 </div> <div class="one-fifth"> 2 </div> <div class="one-fifth"> 3 </div> <div class="one-fifth"> 4 </div> <div class="one-fifth"> 5 </div> 。我们可能会在将来尝试改进此API。

答案 1 :(得分:1)

这是一段代码,可以跟进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);
  }
}