javascript - 如何获得react.element的高度
问题描述
我Symbol(react.element)
通过映射到数组并放置其每个元素的 HTML 标记来动态呈现列表。因此,我的问题是:如何获得每个渲染的高度Symbol(react.element)
?这似乎不在Symbol(react.element)
' 对象中。
在此先感谢您的帮助
解决方案
实际上,如果您使用的是功能组件,最好将此调整大小逻辑隔离在自定义挂钩中,而不是将其留在组件内。您可以像这样创建自定义挂钩:
const useResize = (myRef) => {
const [width, setWidth] = useState(0)
const [height, setHeight] = useState(0)
const handleResize = () => {
setWidth(myRef.current.offsetWidth)
setHeight(myRef.current.offsetHeight)
}
useEffect(() => {
myRef.current && myRef.current.addEventListener('resize', handleResize)
return () => {
myRef.current.removeEventListener('resize', handleResize)
}
}, [myRef])
return { width, height }
}
然后你可以像这样使用它:
const MyComponent = () => {
const componentRef = useRef()
const { width, height } = useResize(componentRef)
return (
<div ref={componentRef}>
<p>width: {width}px</p>
<p>height: {height}px</p>
<div/>
)
}
推荐阅读
- postgresql - Apache Ignite 与 Posgresql
- node.js - 阐明 neo4j 和 neo4j-driver 的不同行为
- anylogic - 该函数停止创建代理
- php - 用于实时视频流的 PHP + cURL(cURL 可以处理无限数据吗?)
- c# - 回发后如何保持下拉选择相同
- translation - wagtail StreamField 块名称翻译问题
- api - 如何从 docker swarm 集群中的一个 docker 服务连接到另一个 docker 服务?
- java - 什么是 MQ 消息中的 RFH 头及其用途
- android - 在Android应用程序中注入Touch事件
- python - 无法使用 python ldap3 模块连接到 ldap