我有一个反应组件,它需要 在渲染之前提前知道它的尺寸。
当我在 jquery 中制作小部件时,我可以 $('#container').width()
并在构建组件时提前获取容器的宽度。
<div id='container'></div>
这些容器的尺寸是在 CSS 中定义的,以及页面上的许多其他容器。谁定义了 React 中组件的高度和宽度以及位置?我习惯 CSS 这样做并能够访问它。但在 React 中,我似乎只能在组件渲染后访问该信息。
原文由 Shai UI 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面的示例 使用反应钩子 useEffect 。
这里的 工作示例
一些注意事项
例如,如果您在未指定初始值的情况下更改状态挂钩(例如
const [dimensions, setDimensions] = useState({});
),则在渲染时高度将读取为零,因为在大多数用例中,这可能不是问题,但我想我会包括它,因为它对调整窗口大小有影响。
窗口大小调整
我还认为原始问题中存在一些未探索的含义。我遇到了为动态绘制的组件(例如图表 )调整窗口大小的问题。
即使未指定此答案,我也将其包括在内, 因为
下面的代码, 这里 的工作示例
回复:窗口大小调整超时- 在我的情况下,我正在绘制一个带有这些值下游图表的仪表板,我发现
RESET_TIMEOUT
上的 100 毫秒似乎在 CPU 使用率和响应能力之间取得了很好的平衡。我没有关于什么是理想的客观数据,所以我把它作为一个变量。