当前位置: 首页 > 知识库问答 >
问题:

React useRef()同时为null和不为null?[副本]

燕禄
2023-03-14

我遇到了一个有趣的问题,我试图为

分配一个ref,所以我有一个 usereF()并将它放在我的 上。我的目标是,一旦我调用了一个特定的函数,我将获得对该div上的mimic .click()的引用。现在,当我调用该函数时,它不起作用,ref为null,因此我 console.log(divRef)和我在devtools中看到的如下内容:

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

进一步研究,在devtools上,我右键单击并选择“Save as global variable”以查看发生了什么,现在我正确获得了ref,使用current:div,只是为了确保使用全局变量来模拟.click()行为,它确实起作用了!我只是保存了同一个对象,但现在在devtools上不是空的。

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

PD:我知道图片是不鼓励的,但我真的想分享我在devtools中看到的东西,即对象是空的,但它内部也有正确的引用。


共1个答案

匿名用户

是否同时为空?

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

ref在创建时为空,而current将在第一次重新呈现后分配,因此会发生这种情况;

共有2个答案

厍浩广
2023-03-14
相关问题
艾浩广
2023-03-14

是否同时为空?

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

ref在创建时为空,而current将在第一次重新呈现后分配,因此会发生这种情况;

 类似资料:
  • 问题内容: 之间有什么区别 和 为何后者不起作用? 问题答案: 在SQL中,之间的比较值,任何其他值(包括另一种使用比较操作符(如),,,等)将导致,这被认为是一个where子句的目的(严格来说,它的“不true”,而不是“false”,但效果相同)。 原因是a的意思是“未知”,因此与a进行任何比较的结果也都是“未知”。因此,通过编码您不会对行造成任何影响。 SQL提供了一种特殊的语法来测试列是否

  • 我有以下JPQL查询: 这应该返回所有对具有NULL的。 但是,我正在运行代码并进行调试,我看到返回的集合包含此字段为null的实体。 这是JPQL中的错误吗?

  • 在Kotlin中,如果变量在应用程序启动时为,并且在创建后不能再次赋值为,那么有什么方法可以对其进行注释吗? 我不能将field设置为例如,因为它可以在某个时候被置为空,或者,因为它在使用之前被初始化(或者这可能是解决我的情况的正确方法?)。

  • 我终于花时间来了解为什么Visual Studio Code让我把放在相等比较的左侧。 在处理此行为时,我发现,当将包含数组与$null进行比较时,“预期的意外行为”发生在包含两个或多个数组中,但对于包含单个数组则不然。也就是说, $array 包含多个 $null 元素,则等于 $array只包含一个元素时,则不等于 !导致这种差异元素的数量是多少? 下面的测试代码演示了这种行为... …和输出

  • 问题内容: 是否 hibernate 转换在 HQL 到在 SQL ? 问题答案: 那是hibernate中的二进制运算符,应该使用 看看14.10。表达方式

  • 问题内容: 我必须编写一个例程,如果变量的类型为,则将变量的值加1,否则将变量的值分配为0,其中变量的初始值为或。 第一个实现是因为我认为没有数字会使算术表达式为假,但是由于计算为真,所以这是错误的。然后,我得知行为类似于0,并且以下表达式均被评估为true。 当然不是0。被评估为false。这使看似重言式的表达成为错误。 为什么实际上不是0,却像0? 问题答案: 您真正的问题似乎是: 为什么: