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

如何在渲染之前获取React组件的大小(高度/宽度)?

张鸿宝
2023-03-14
问题内容

我有一个react组件,需要 在渲染之前 预先知道其尺寸

当我在jquery中制作一个小部件时,我可以$('#container').width()在构建组件时提前获取容器的宽度。

<div id='container'></div>

这些容器的尺寸以及页面上的其他许多容器都在CSS中定义。谁在React中定义组件的高度,宽度和位置?我已经习惯了CSS并能够访问它。但是在React中,似乎我只能在组件渲染后访问该信息。


问题答案:

如前所述,在将元素呈现为DOM之前,您无法获得任何元素的尺寸。在React中,您可以做的只是渲染一个容器元素,然后在中获取其大小componentDidMount,然后渲染其余内容。

我做了一个有效的例子。

请注意,使用setStatein componentDidMount是一种反模式,但在这种情况下可以使用,因为这正是我们要实现的目标。

干杯!

码:

import React, { Component } from 'react';

export default class Example extends Component {
  state = {
    dimensions: null,
  };

  componentDidMount() {
    this.setState({
      dimensions: {
        width: this.container.offsetWidth,
        height: this.container.offsetHeight,
      },
    });
  }

  renderContent() {
    const { dimensions } = this.state;

    return (
      <div>
        width: {dimensions.width}
        <br />
        height: {dimensions.height}
      </div>
    );
  }

  render() {
    const { dimensions } = this.state;

    return (
      <div className="Hello" ref={el => (this.container = el)}>
        {dimensions && this.renderContent()}
      </div>
    );
  }
}


 类似资料:
  • 问题内容: 我有一个React组件,需要 在渲染之前 预先知道其尺寸 。 当我在jquery中制作一个小部件时,我可以在构建组件时提前获取容器的宽度。 这些容器的尺寸以及页面上的许多其他容器均在CSS中定义。谁在React中定义组件的高度,宽度和位置?我已经习惯了CSS做到这一点并且能够访问它。但是在React中,似乎我只能在组件渲染后访问该信息。 问题答案: 如前所述,在将元素呈现为DOM之前,

  • 问题内容: 在使用jQuery或JavaScript上传到我的网站之前,如何获取文件大小,图像高度和宽度? 问题答案: 使用 HTML5和 File API 使用URL API的示例 图片来源将是代表Blob对象的URL 使用FileReader API的示例 如果您需要图像源作为长Base64编码的数据字符串

  • 如何使用jQuery或JavaScript在上传到我的网站之前获取文件大小、图像高度和宽度?

  • 问题内容: 在渲染我的组件之前,我需要获取一些信息。该信息将由API提供,并通过ajax调用获取。 我只是想在渲染组件之前等待10秒钟,但是它说: 兑现承诺后,我可以渲染我的组件吗? 我将ES6与JSX,redux(带有react-router的通用路由器)一起使用。 非常感谢您的帮助! 问题答案: 这是我通常做的事情: 这是将要发生的事情的细分… 组件即将加载 触发componentDidMou

  • 问题内容: 在使用jQuery或JavaScript上传到我的网站之前,如何获取文件大小,图像高度和宽度? 问题答案: 使用 HTML5和File API 图片来源将是代表Blob对象的URL 使用FileReader API的 如果您需要图像源作为长Base64编码的数据字符串

  • 问题内容: 如何获得元素的渲染高度? 假设您的元素内部包含一些内容。内部的内容将扩大的高度。当您没有明确设置高度时,如何获得“渲染的”高度。显然,我尝试过: 有这样做的技巧吗?如果有帮助,我正在使用jQuery。 问题答案: 应该是 jQuery。这将以数字形式检索包装集中的第一个项目的高度。 尝试使用 仅当您首先将属性设置为有效。不是很有用!