javascript - 使用 React 检测垂直页面溢出
问题描述
我想通过浏览器窗口是否有垂直滚动条来有条件地渲染一个 div。我的renderElements
方法从 API 中提取,结果各不相同。我尝试为我的 div 分配一个 ref 并将它的 scrollHeight 与它的 innerHeight in 进行比较ComponentDidUpdate
。尽管由于出现多个结果,页面确实有滚动条,但我的hasOverflow
变量总是返回false
. 让它发挥作用的最理想方法是什么?
class ExampleClass extends Component {
componentDidUpdate() {
const element = this.element;
const hasOverflow = element.scrollHeight > element.innerHeight;
console.log(hasOverflow);
}
render() {
<div ref={ el => { this.element = el } }>
{ this.renderElemnts() }
</div>
}
}
解决方案
innerHeight
是 窗口 的 函数 所以element.innerHeight
总是undefined
, 所以element.scrollHeight > element.innerHeight
总是false
.
你在找什么element.offsetHeight
:
https://stackblitz.com/edit/react-vb4quk
如果你想测试窗口是否有滚动,你可以检查
document.body.scrollHeight > window.innerHeight
推荐阅读
- r - 人物网络-igraph中的中心度
- powershell - 使用 Windows Powershell (FFmpeg) 创建连接文本文件
- pandas - 在不同的绘图行上绘制 Pandas Dataframe 中的列的简单方法?
- laravel - 为什么使用 Laravel 的广播“toOthers”而不是在广播中更新每个人(包括自己)?
- python - 向数组添加相同的值
- gcc - 如何使用 gcc 在 CMake 中正确设置可见性属性?
- openstack - openstack octavia:双耳瓶工作者异常
- javascript - 正则表达式 - 检测并替换字符串中多于两位的数字
- python - python 错误:无法在 qlabel 中显示 .gif
- apache-spark - Spark:如何从纪元列创建新的日期字符串列?