我有一个react组件,需要 在渲染之前 预先知道其尺寸 。
当我在jquery中制作一个小部件时,我可以$('#container').width()
在构建组件时提前获取容器的宽度。
<div id='container'></div>
这些容器的尺寸以及页面上的其他许多容器都在CSS中定义。谁在React中定义组件的高度,宽度和位置?我已经习惯了CSS并能够访问它。但是在React中,似乎我只能在组件渲染后访问该信息。
如前所述,在将元素呈现为DOM之前,您无法获得任何元素的尺寸。在React中,您可以做的只是渲染一个容器元素,然后在中获取其大小componentDidMount
,然后渲染其余内容。
我做了一个有效的例子。
请注意,使用setState
in 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。这将以数字形式检索包装集中的第一个项目的高度。 尝试使用 仅当您首先将属性设置为有效。不是很有用!