我在最新的react 16.5.2中使用getDerivedStateFromProps生命周期挂钩。为什么我无法访问该对象的组件?我在做错什么吗?
class EmailInput extends Component {
state = { email: this.props.defaultEmail };
handleChange = event => {
this.setState({ email: event.target.value });
};
getDerivedStateFromProps() {
this.doSomething();
}
doSomething = () => {
//do something here
}
render() {
return <input onChange={this.handleChange} value={this.state.email} />;
}
}
答案 0 :(得分:3)
您不能使用static
访问非静态方法。您需要定义静态方法:
this
您可以在mdn docs中了解有关静态方法的更多信息。
此外,我们分别使用static getDerivedStateFromProps() {
EmailInput.doSomething();
// ^^ class name
//OR,
// this.doSomething(); // accessible, coz doSomething is now static method
}
static doSomething() {
//do something here
}
,this.props
以非静态方法访问道具和状态。但是由于getDerivedStateFromProps是静态方法,因此我们需要从其参数中进行访问:
this.state