如何在 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);
}
}
我正在尝试从 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);
}
}