React getDerivedStateFromProps无法访问此

时间:2018-10-03 15:31:42

标签: javascript reactjs

我在最新的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} />;
  }
}

1 个答案:

答案 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