React useRef() 为空且同时不为空?

React useRef() is null and is not null at the same time?

我遇到了一个有趣的问题,我正在尝试将 ref 分配给 <div>,所以我有一个 useRef() 并将其放在我的 <div 上.我的目标是,一旦我调用了一个特定的函数,我就会在那个 div 上得到模仿 .click() 的引用。现在,当我调用该函数时它不起作用,ref 是 null,所以我 console.log(divRef) 并且我在 devtools 中看到的是以下内容:

我看到在我的 ref 上,current 是 null 但里面也有对我的 div 的引用?我无法访问那个 div 引用,即使当我看到它的属性时我可以确认它确实是我想要引用的 div。

进一步调查,在 devtools 上我右键单击并选择 'Save as global variable' 看看会发生什么,现在我得到了正确的引用,current: div,只是为了确保,我使用了全局变量模仿 .click() 的行为,它确实有效!我刚刚保存了同一个对象,但不知何故现在在 devtools 上不是 null

为什么当我记录我的 ref 时,我可以 看到 我的 div 被返回但我无法访问它,不知何故是 null 而不是 null同时?同样,我的目标是能够在函数调用中访问引用,这样我就可以模仿 .click()

PD:我知道不鼓励使用图像,但我真的很想分享我在 devtools 中看到的内容,即对象为 null,但其中包含正确的引用。

is null and is not null at the same time?

没有。它的开发工具对该对象的评估,如果您将鼠标悬停在那个蓝色 i 图标上,它会告诉您刚刚评估了值。因为它正在记录的对象引用与它为空时创建的时间相同;如果您真的想在特定时间点查看对象中包含的内容,您应该记录其 JSON.stringify() 值(或深度复制并记录复制的版本)。

ref 创建时是空的,current 将在第一个 re-render 之后分配,所以会发生这种情况;