使用ref和LayoutEffect钩子来实现。在组件加载前,通过ref获取到组件真正的宽高并进行保存。在LayoutEffect阶段再去读取真正的宽高值来进行布局计算。示例代码如下:
import React, { useRef, useState, useLayoutEffect } from 'react';
const MyComponent = () => {
const [containerSize, setContainerSize] = useState({ width: 0, height: 0 });
const containerRef = useRef(null);
useLayoutEffect(() => {
if (containerRef.current) {
const { width, height } = containerRef.current.getBoundingClientRect();
setContainerSize({ width, height });
}
}, []);
//使用containerSize进行布局计算
return (
{/* 子组件 */}
);
};