在反应中计算元素尺寸的自定义钩子

在反应中计算元素尺寸的自定义钩子

在某些情况下,我们可能需要知道 react 中没有给定宽度和高度的元素的大小。

 从“反应”导入 { useState, useEffect } 常量 useContainerDimensions = containerRef => {  
 常量 getDimensions = () => ({  
 宽度:containerRef.current.offsetWidth,  
 高度:containerRef.current.offsetHeight  
 }) const [尺寸,setDimensions] = useState({width: 0,height: 0}) 使用效果(()=> {  
 常量句柄大小 = () => {  
 设置维度(获取维度())  
 } 让维度超时 = setTimeout(() => {  
 if(containerRef.current) {  
 设置维度(获取维度())  
 }  
 }, 100) window.addEventListener("resize", handleResize) 返回 () => {  
 清除超时(维度超时)  
 window.removeEventListener("resize", handleResize)  
 }  
 }, [容器引用]) 返回尺寸  
 } 导出默认使用ContainerDimensions

上面的自定义钩子将计算元素的尺寸并返回它,如果我们通过 参考 的一个元素。每当屏幕尺寸发生变化时,它都会重新计算尺寸。

为了通过包含像素来获取宽度和高度,可以使用 clientWidth 和 clientHeight 来代替 offsetWidth 和 offsetHeight。

例子

 导出默认函数 App() {  
 常量 cartItemsContainerRef = useRef(null)  
 //容器的尺寸可以从宽高得到  
 常量 { 宽度,高度 } = useContainerDimensions(cartItemsContainerRef) 返回 (  
 <div ref={cartItemsContainerRef}>  
 ...  
 </div>  
 )  
 }

谢谢阅读。关注我了解更多。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/18574/24280609

posted @ 2022-09-06 09:25  哈哈哈来了啊啊啊  阅读(25)  评论(0编辑  收藏  举报