当前位置: 首页 > 面试题库 >

ReactJS-获取元素的高度

白浩气
2023-03-14
问题内容

React渲染元素后如何获取元素的高度?

HTML

<div id="container">
<!-- This element's contents will be replaced with your component. -->
<p>
jnknwqkjnkj<br>
jhiwhiw (this is 36px height)
</p>
</div>

ReactJS

var DivSize = React.createClass({

  render: function() {
    let elHeight = document.getElementById('container').clientHeight
    return <div className="test">Size: <b>{elHeight}px</b> but it should be 18px after the render</div>;
  }
});

ReactDOM.render(
  <DivSize />,
  document.getElementById('container')
);

结果

Size: 36px but it should be 18px after the render

它正在计算渲染之前的容器高度(36像素)。我想获得渲染后的高度。在这种情况下,正确的结果应为18px。jsfiddle


问题答案:

看到这个小提琴(实际上更新了您的)

您需要钩住componentDidMount在render方法之后要运行的对象。在那里,您可以获得元素的实际高度。

var DivSize = React.createClass({
    getInitialState() {
    return { state: 0 };
  },

  componentDidMount() {
    const height = document.getElementById('container').clientHeight;
    this.setState({ height });
  },

  render: function() {
    return (
        <div className="test">
        Size: <b>{this.state.height}px</b> but it should be 18px after the render
      </div>
    );
  }
});

ReactDOM.render(
  <DivSize />,
  document.getElementById('container')
);



<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>

<div id="container">
<p>
jnknwqkjnkj<br>
jhiwhiw (this is 36px height)
</p>
    <!-- This element's contents will be replaced with your component. -->
</div>


 类似资料:
  • 本文向大家介绍js获取隐藏元素的宽高,包括了js获取隐藏元素的宽高的使用技巧和注意事项,需要的朋友参考一下 获取隐藏元素(display:none)的物理尺寸 问题及场景 假如我们有这样一个输入框,点击能展开选择。如下图: 在这里输入框和下方的展开区域是分离的,独立的两个控件!初始状态下面的可选框是隐藏的(ng-show=false) 展开区域中可折叠组件accordion(对应图中省份,排序字段

  • 问题内容: 我需要获取隐藏的div内的元素的高度。现在,我显示div,获取高度,然后隐藏父div。这似乎有点愚蠢。有没有更好的办法? 我正在使用jQuery 1.4.2: 问题答案: 您可以做这样的事情,但是有点笨拙,请忘记它是否已经是绝对的:

  • 问题内容: 还有另一种获取DOM元素ID的方法吗? 问题答案: 是的,你可以只使用属性的的DOM元素,例如: 或者,是这样的:

  • 本文向大家介绍JavaScript与JQUERY获取元素的宽、高和位置,包括了JavaScript与JQUERY获取元素的宽、高和位置的使用技巧和注意事项,需要的朋友参考一下 javascript中 ele.getBoundingClientRect():获取一个元素相对于浏览器视口的的坐标(无论父元素定位与否),返回一个Object对象,该对象有6个属性:top/left/right/botto

  • 问题内容: 如何在ReactJS中获得视口高度?在普通的JavaScript中,我使用 但是使用ReactJS,我不确定如何获取此信息。我的理解是 仅适用于创建的组件。但是,对于or 元素而言并非如此,这可能会给我窗口的高度。 问题答案: 设置道具 视口高度现在可以在渲染模板中用作{this.state.height}

  • 问题内容: 如何从指令内部获取和设置元素的父级高度? 这就是我现在所拥有的,显然没有用。 问题答案: 您可以使用jqLit​​e / jQuery的和方法: 或者,您也可以使用带有属性的纯JavaScript来实现,该属性是对父元素的引用: 还要注意,由于这里是一个jqLit​​e / jQuery实例,它是一个元素的类似数组的集合,因此您需要使用它来访问原始HTMLElement。