gpt4 book ai didi

javascript - React,useRef 不允许访问当前属性,得到 Uncaught TypeError : Cannot read properties of undefined (reading 'clientHeight' )

转载 作者:行者123 更新时间:2023-12-05 01:52:48 24 4
gpt4 key购买 nike

我正在使用以下方法存储对图像项的引用:const renderedImageRef = useRef()。然后使用以下方法在 render() 函数中分配 ref:

<img ref={renderedImageRef} src=... />

在下面的另一个 JSX 项中,我尝试使用以下方法访问 renderedImageRef.current.clientHeight:

<div style={{top:`${renderedImageRef.current.clientHeight}px`}}>
Hello world
</div>

但这会在控制台中产生一个错误:

Uncaught TypeError: Cannot read properties of undefined (reading 'clientHeight')

奇怪的是,如果我尝试从 useEffect Hook 中访问 renderedImageRef.current.clientHeight,它会正确显示高度:

useEffect(() => {
if(renderedImageRef !== null) {
console.log(renderedImageRef)
}
}, [renderedImageRef])

为什么我会收到控制台错误?

最佳答案

一个可能的答案是这一行:

<div style={{top:`${renderedImageRef.current.clientHeight}px`}}>Hello world</div>

在此代码之前出现在您的代码中:

<img ref={renderedImageRef} src=... />

在女巫案例中,出现错误是正常的。要知道当你调用const renderedImageRef = useRef()时,renderedImageRef的值是{current:undefined}。 JSX 需要在 ref 获取其在 current 字段中的值之前呈现。

一个解决方案是为 top 使用一个状态:

const [top, setTop]=useState(0)
useEffect(() => {
if(renderedImageRef.current) {
setTop(renderedImageRef.current.clientHeight);
}
}, [renderedImageRef])
<div style={{top:`${top}px`}}>Hello world</div>

关于javascript - React,useRef 不允许访问当前属性,得到 Uncaught TypeError : Cannot read properties of undefined (reading 'clientHeight' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71449256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com