React如何使用`const props = this.props`

时间:2019-03-06 21:18:13

标签: javascript reactjs closures

我读了Dan写的article。在下面的示例中

class ProfilePage extends React.Component {
  showMessage = (user) => {
    alert('Followed ' + user);
  };

  handleClick = () => {
    const props = this.props;
    setTimeout(() => this.showMessage(props.user), 3000);
  };

  render() {
    return <button onClick={this.handleClick}>Follow</button>;
  }
}

props更改后,this.props为什么不更改,因为两者都指向同一个参考?

1 个答案:

答案 0 :(得分:0)

props对象是不可变的,在收到新道具的情况下,this.props引用可能会随时间变化。

应该是:

  handleClick = () => {
    setTimeout(() => {
      const { props } = this;
      this.showMessage(props.user);
    }, 3000);
  };

此外,应该跟踪超时,以便在组件卸载时取消超时,以防止泄漏和异常。