我试图创建一个通用组件,可以在其他应用程序中重用。我需要知道渲染后组件的宽度,以便我可以修改组件的内容。如何获取:在React渲染后的组件宽度
我一直试图在反应中使用不同的生命周期而没有成功。
componentDidUpdate() {
console.log('width', this.element.offsetWidth);
}
render() {
return (
<div ref={(element) => {this.element = element }} />
);
}
当我尝试这个,我得到了屏幕的宽度,但如果我改变窗口的大小,我得到的组件的宽度。看到Chrome登录:
ComponentDidMount执行之前呈现这样this.element
是undefined
。
我也试图用npm的不同库来解决这个问题,但没有运气。
更多信息:组件必须在Bootstrap列中以不同宽度工作。
render() {
<Row>
<Col sm={3} />
<MyComponent />
</Col>
<Col sm={9} />
<MyComponent />
</Col>
<Row>
}
澄清我不想调整窗口的大小,我为没有被明确道歉。我提到调整大小的唯一原因是,当创建DOM并调整大小时,我在offsetWidth
中得到正确的值。我正在寻找一种解决方案,我可以在不调整大小的情况下获得正确的值。发布渲染函数调用,侦听器,一些反应魔法或其他解决方案。我的问题是我对虚拟与真实DOM缺乏了解。
也许保存'offsetWidth'在'state',无论您何时组件改变其大小,你我若在设定状态更新状态 – mersocarlin
annon函数setState({element:element})会产生一个无限循环。我在第一次执行时也看到该元素为'null' –
我没有说要将该元素存储在状态中,而是存储'width'值。所以每次它改变时,你都可以设置你的状态值。 – mersocarlin