Я строю фотогалерею в Реакции. Очевидно, что он должен быть отзывчивым, и я решил эту проблему, установив значения, как в методе рендеринга компонента:
let thumbWidth = window.innerWidth >= 480 ? 75 : 100;
Проблема в том, что мне нужно изменить значение const при изменении размера окна. Моей первой попыткой было создать такую функцию и связать ее в конструкторе:
getThumbWidth = (vpWidth) => {
if(vpWidth >= 480 ) {
this.setState({thumbSize: 120});
} else {
this.setState({thumbSize: 50});
}
}
Это работало с точки зрения установки начального значения переменной, но как мне вызвать функцию, когда размер окна изменяется?
Попытался добавить функцию изменения размера:
resize = () => this.getThumbWidth()
... и затем изменив getThumbWidth, чтобы он устанавливал значение в состоянии компонента - идея заключается в том, что при обновлении состояния компонент автоматически перерисовывает:
getThumbWidth = (vpWidth) => {
if(vpWidth >= 480 ) {
this.setState({thumbSize: 120});
} else {
this.setState({thumbSize: 50});
}
}
А затем вызывать его с помощью методов жизненного цикла, как предлагалось в нескольких других решениях, но прослушиватель событий, похоже, не запускается:
componentDidMount() {
window.addEventListener('resize', this.resize)
}
componentWillUnmount() {
window.removeEventListener('resize', this.resize)
}
Все еще не работает, хотя ... есть идеи?