Связать в конструкторе для реагирования - PullRequest
0 голосов
/ 04 мая 2020

Я искал кучу кода для обработки изменений размера экрана и у меня возникли вопросы о том, что я видел.

1) Почему нам нужно связать this с функцией обновления окна в конструкторе с помощью this.updateWindowDimensions = this.updateWindowDimensions.bind(this);? Разве у нас нет доступа к этому уже в классе? И почему нам даже нужно добавить этот указатель функции в конструктор, когда у нас есть доступ к нему в классе?

2) Почему мы инициализируем высоту и ширину нулем, а не инициализируем width: window.innerWidth, height: window.innerHeight?

constructor(props) {
              super(props);
              this.state = { width: 0, height: 0 };
              this.updateWindowDimensions = this.updateWindowDimensions.bind(this);
            }

componentDidMount() {
  this.updateWindowDimensions();
  window.addEventListener('resize', this.updateWindowDimensions);
}

componentWillUnmount() {
  window.removeEventListener('resize', this.updateWindowDimensions);
}

updateWindowDimensions() {
  this.setState({ width: window.innerWidth, height: window.innerHeight });
}
...