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