gpt4 book ai didi

javascript - 根据视口(viewport)宽度 react js设置初始常量

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:58 25 4
gpt4 key购买 nike

我正在用 React js 构建一个照片库,各种值(缩略图大小、图像大小)必须根据视口(viewport)的宽度进行更改。需要更改的值是应用程序中各种计算的基础,因此不能简单地放在样式表中。不想陷入内部工作的泥潭,我在渲染方法中设置了初始值,如下所示:

    // 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
}
}

我想做的是,如果 vp 尺寸较大,则使 thumbWidth 值更大,并使其以 75 为基础,例如 480px(或其他任意值)。

到目前为止我尝试过的方法可能反射(reflect)了我对 React js 的相对较新,我在组件的开头包含以下内容:

if(window.innerWidth >= 480 ) {
const thumbWidth = 75;
} else {
const thumbWidth = 100;
}

不幸的是,这样做意味着 react 会将“thumbWidth”标记为未定义,无论它随后在何处使用。

如果我将它包含在 componentDidMount 或渲染方法本身中,也会发生同样的情况。

我查看了诸如 contra/react-responsive 之类的节点包,但这些似乎是关于将 jsx 包含在媒体查询中,这并不能解决问题。我只是在做一些非常愚蠢的事情,还是这件事很难解决?

最佳答案

const 是阻塞作用域,因此在 if 中声明它不会使其在 if block 之外可用。您可以在更高的范围内声明 let thumbWidth 或只使用 ternary expression :

const thumbWidth = window.innerWidth >= 480 ? 75 : 100

关于javascript - 根据视口(viewport)宽度 react js设置初始常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com