Я строю фотогалерею в соответствии с js, и различные значения (размер миниатюры, размер изображения) должны меняться в зависимости от ширины области просмотра. Значения, которые необходимо изменить, являются основой различных вычислений в приложении, поэтому их нельзя просто поместить в таблицу стилей. Не желая увязать во внутренней работе, я установил начальные значения в моем методе рендеринга следующим образом:
// vars
const thumbWidth = 75;
const viewWindowWidth = thumbWidth * 5;
const thumbContainerwidth = thumbWidth * 5;
const thumbContainerHeight = 75;
let thumbContainerWidth = this.state.photos.length * thumbWidth;
let thumbContainerPos = this.state.thumbContainerPos;
let dynamicStyles = {
thumbContainerOuter : {
width: thumbContainerwidth
},
thumbContainerInner : {
left: thumbContainerPos
}
}
Что я хочу сделать, так это увеличить значение thumbWidth, если размер vp больше, и сделать его основанием на 75 ниже, скажем, 480px (или другого произвольного значения).
Подход, который я до сих пор пробовал, вероятно, отражает мою относительную новизну реагировать на js, в начале компонента я включаю следующее:
if(window.innerWidth >= 480 ) {
const thumbWidth = 75;
} else {
const thumbWidth = 100;
}
К сожалению, выполнение этого означает, что реакция помечает 'thumbWidth' как неопределенную, где бы она ни использовалась впоследствии.
То же самое происходит, если я включаю его в componentDidMount или в сам метод рендеринга.
Я смотрел на пакеты узлов, такие как «против / реагирующий», но, похоже, они заключают в себе включение jsx в медиа-запросы, что не решает проблему.
Я просто делаю что-то действительно глупое или это сложно разобраться?