【问题标题】:document.getElementById("componentID").clientHeight always give a zero in componentDidMount() functiondocument.getElementById("componentID").clientHeight 在 componentDidMount() 函数中总是给出零
【发布时间】:2019-08-28 04:49:51
【问题描述】:

我想在页面完全加载后获取页眉的高度。

我正在尝试通过调用将高度保存在 componentDidMount() 中

document.getElementById("Header").clientHeight

但它总是在 componentDidMount() 中返回 0。 我也试着打电话

document.getElementById("Header").getClientRects()[0].height

但它也失败了,因为 .getClientRects() 返回空数组。 这两种方法适用于 componentDidMount() 以外的任何其他函数

【问题讨论】:

  • 这里是代码ideone.com/ZoWCTI
  • 它是否适用于 window.getComputedStyle(document.getElementById("Header")).height ? (您可能必须删除“px”)
  • window.getComputedStyle(document.getElementById("Header")) 返回自动
  • “px”是什么意思?我必须从哪里删除它?
  • 在我尝试过的所有示例中,它都会返回类似于“123px”的高度(您是否在调用 oO 之后添加 .height 仍然让它返回 auto 听起来很奇怪)

标签: html reactjs react-native jsx


【解决方案1】:

您是否尝试将其包装为超时?

componentDidMount() {
  setTimeout(()=>{
     document.getElementById("Header").clientHeight
   },0)
}

【讨论】:

  • 零让它等待 0 毫秒,所以如果我将它更改为 100 毫秒之类的任何其他值,它就可以完美运行!非常感谢!
猜你喜欢
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
相关资源
最近更新 更多