Я искал кучу кода для обработки изменений размера экрана и у меня возникли вопросы о том, что я видел.
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 });
}