我試圖創建一個通用組件,可以在其他應用程序中重用。我需要知道渲染後組件的寬度,以便我可以修改組件的內容。如何獲取:在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