我想使div的宽度与图像的宽度相同。这包括调整窗口大小和图像自动调整大小的时间。目前,我尝试使用useState,但在调整大小时不响应。
const basicInfoImage = useRef();
const basicInfoText = useRef();
const [basicInfoImageWidth, setBasicInfoImageWidth] = useState();
useEffect(() => {
setBasicInfoImageWidth(
basicInfoImage.current.getBoundingClientRect().width
);
});
<img
src={profilePic}
alt="Profile Pic"
className="About-basic-info-image"
ref={basicInfoImage}
/>
<p
className="About-basic-info-text"
ref={basicInfoText}
style={{ width: basicInfoImageWidth }}
>
{basicInfoTextContent}
</p>
最佳答案
现在,您使用useEffect
的方式仅在安装组件时运行一次。您必须将事件侦听器添加到resize事件中,然后调用setBasicInfoImageWidth
useEffect(() => {
window.addEventListener('resize', () => setBasicInfoImageWidth(
basicInfoImage.current.getBoundingClientRect().width
));
});
使用CSS解决此问题可能会更简单,但是如果没有有效的示例,很难为您提供有效的代码段。如果您添加jsfiddle链接,我们将很乐意为您提供CSS帮助