Sam*_*Sam 4 javascript reactjs
我正在使用以下方式存储对图像项目的引用:const renderedImageRef = useRef()。然后使用以下方法在函数中分配 ref render():
<img ref={renderedImageRef} src=... />
Run Code Online (Sandbox Code Playgroud)
在下面的另一个 JSX 项目中,我尝试renderedImageRef.current.clientHeight使用以下方式进行访问:
<div style={{top:`${renderedImageRef.current.clientHeight}px`}}>
Hello world
</div>
Run Code Online (Sandbox Code Playgroud)
但这会在控制台中产生错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'clientHeight')
Run Code Online (Sandbox Code Playgroud)
renderedImageRef.current.clientHeight奇怪的是,如果我尝试从钩子内部访问useEffect,它会正确显示高度:
useEffect(() => {
if(renderedImageRef !== null) {
console.log(renderedImageRef)
}
}, [renderedImageRef])
Run Code Online (Sandbox Code Playgroud)
为什么我收到控制台错误?
一个可能的答案是这一行:
<div style={{top:`${renderedImageRef.current.clientHeight}px`}}>Hello world</div>
Run Code Online (Sandbox Code Playgroud)
在此代码之前出现在您的代码中:
<img ref={renderedImageRef} src=... />
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您收到错误是正常的。就是要知道,当你调用的时候,的const renderedImageRef = useRef()值为。必须在 a获取字段中的值之前渲染 JSX 。renderedImageRef{current:undefined}refcurrent
解决方案是使用状态top:
<div style={{top:`${renderedImageRef.current.clientHeight}px`}}>Hello world</div>
Run Code Online (Sandbox Code Playgroud)
<div style={{top:`${top}px`}}>Hello world</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |