如何在使用react时动态调整元素大小
How can I resize elements dynamically while using react?
我有一个组件网格,每行3个。
它们是表示产品的div,具有价格和描述等内部组件。这些产品有时有较长的标题,这会将其他组件向下推。
这很好,但当发生这种情况时,我希望同一行中其他组件的标题具有相同的高度,以便下一个组件(价格、评级)垂直对齐。因此,一行中每种产品的价格都是相同的。
然后,我想使行的高度为该行中三个元素的最大高度。
有没有一种好的方法可以动态地操纵将与react一起工作的元素的高度?
我会在所有子组件中注入一个函数,该函数在子组件渲染后调用。
示例:
var Product = React.createClass({
componentDidMount: function() {
var height = 200; // calculate height of rendered component here!
// set height only one time
if (this.props.findHeight) {
this.props.setHeight(height);
}
},
render: function() {
return <div style={{height:this.props.height,backgroundColor:'green'}}>
Product
</div>;
}
});
var Main = React.createClass({
getInitialState: function() {
return {
maxHeight:0,
findHeight: true
}
},
componentDidMount: function() {
this.setState({
maxHeight: this.state.maxHeight,
findHeight: false
});
},
setMaxHeight: function(maxHeight) {
if (maxHeight > this.state.maxHeight) {
this.setState({maxHeight: maxHeight})
}
},
render: function() {
return (<div>
<Product setHeight={this.setMaxHeight} height={this.state.maxHeight} findHeight={this.state.findHeight} />
</div>);
}
});
如何计算组件的实际高度是另一个问题。你可以用jQuery(如何在px维度中获得<div>的高度)来解决这个问题。不幸的是,我不能回答香草js的问题,但我相信当你问谷歌时,你会很快找到答案:-)
问候
通过扩展CapCa提供的答案,您可以通过Element.getBoundingClientRect().获得组件的实际高度
let domRect = element.getBoundingClientRect();
你也可以通过使用react Ref.来瞄准你的目标react组件的顶部元素。你的代码可能是这样的,
let domRect = this.TargetedElementRef.getBoundingClientRect(),
elementHeight = domRect.height,
elementWidth = domRect.width; // you can get the width also
相关文章:
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- window.open根据动态内容自动调整高度和宽度
- 如何动态调整文本大小以适应元素以防止拉伸
- 根据容器 DIV 中的图像动态调整容器 DIV 的大小
- 如何在浏览器宽度/高度变化时动态调整图像网格的大小
- 如何根据浏览器宽度动态调整 css 样式表
- 如何在使用react时动态调整元素大小
- 如何在OpenLayers中的Heatmap.js中动态调整缩放
- Jquery调整大小动态更新
- 在没有新行的情况下调整td中的动态加载内容
- 为什么这块画布一直在生长?(动态调整画布大小)
- 使用javascript动态调整CSS
- jQuery UI-动态设置可调整大小元素的minHeight
- 调整动态生成的 iframe 的大小
- 自动调整动态更改高度(更小或更大)的 iframe
- 动态调整动态更改内容高度的iFrame高度(内部说明)
- 使用javascript调整动态生成的字符串的大小
- 调整动态输入
- 调整动态伸缩项目的大小
- 如何拖放和调整动态创建的表的大小