componentDidMount()中的高度值错误

时间:2019-03-08 09:40:03

标签: javascript reactjs

这三个currentDot.translatesAutoresizingMaskIntoConstraints = false currentDot.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: 0) currentDot.centerXAnchor.constraint(equalTo: self.centerXAnchor, constant: 0) 从这里:

console.log()

全部返回 18 而不是 45.13 (或其中至少一个),它是在开发人员控制台中查看时导航栏的渲染高度)

如果import React from 'react'; export default class FixedTopNavigation extends React.Component { constructor(props) { super(props); this.topNav = React.createRef(); } componentDidMount() { console.log(this.topNav.current.offsetHeight); console.log(this.topNav.current.clientHeight); console.log(this.topNav.current.scrollHeight); } render() { return ( <nav ref={this.topNav} id="topNav" className="fixed-top navbar navbar-expand-md navbar-light bg-light"> <button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#sideNav" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation"> <span className="navbar-toggler-icon"></span> </button> <a className="navbar-brand" href="/">Biometrics</a> </nav> ) } } 未返回正确的值,那么正确获得正确的值的方式是什么?

大多数答案/教程或多或少都使用相同的方式(除了创建引用的方式除外),这就是为什么我不明白为什么这段代码不起作用的原因。

1 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标。

使用setTimeout()黑客

An error occurred (ValidationError) when calling the CreateStack operation: Template format error: Unrecognized resource types: [AWS::Athena::NamedQuery]

使用findDOMNode()

componentDidMount() {
  setTimeout(() => {
    console.log(this.topNav.current.clientHeight);
  }, 1);
}