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

React中键的意义是什么?[副本]

子车勇锐
2023-03-14

在React中键的意义是什么?我读到在循环中使用索引不是键的最佳解决方案。为什么啊?

共有2个答案

公孙令秋
2023-03-14

键有助于识别哪些项已更改、已添加或已删除。应为数组中的元素提供键,以使元素具有稳定的标识:

来自:React文档-列表和密钥

如果键是索引,则移动项将更改它。因此,像不受控制的输入这样的组件状态可能会以意想不到的方式混淆和更新。

来自:React文档-对账

薄龙光
2023-03-14

React使用键为渲染的每个React元素提供“标识”。当两个元素具有相同的键时,它们被视为相同的元素,否则,它们是不同的。当元素在列表中重新排列或移动到渲染函数中的不同位置时,这会有所帮助,因此React可以执行有效的DOM操作以获得所需的最终结果。有关更多信息,请参阅文档。

我读到在循环中使用索引并不是键的最佳解决方案。为什么?

因为这与根本不给列表项提供键是一样的。如果你有一个列表,比如“代码> [a,b,c] < /代码>,然后删除中间的一个,<代码> [a,c] < /代码>,如果它们都被索引键入,反应会认为你刚刚删除了最后一个,而不是中间的那个。

 类似资料:
  • 问题内容: 我想了解如果我在动态添加的组件中不使用键会发生什么。我删除了键,它的渲染没有任何问题,只是给出了有关键使用的警告消息。有人可以举个例子,说明如果不使用密钥会带来什么后果? 问题答案: 按键可帮助React识别哪些项目已更改,添加或删除。应该为数组内的元素提供键,以赋予元素稳定的标识: 例: TL; DR在渲染动态子级时使用唯一键和常量键,或者期望发生奇怪的事情。 在我使用React.j

  • 可能重复: 什么 我在一些java代码中遇到了一些不熟悉的符号,虽然代码编译和功能正确,但我对尖括号在代码中的确切作用感到困惑。我在com中找到了代码。太阳Java语言帮助搜索位缓冲区,其片段如下: 那些看起来神秘的括号是做什么的?它看起来几乎像c插入/提取,但我知道Java没有这样的东西。 此外,我还尝试在谷歌上搜索,但出于某种原因,谷歌似乎看不到尖括号,即使我把它们放在引号中。

  • 我一直在谷歌搜索它,但谷歌搜索关键字“?”也没那么好。我很想知道它是做什么的,什么时候用。 谢了! 我已经看过几次了,但这里有一个我刚刚看到的例子

  • 使用。NET核心,您可以注册“服务”,据我所知,这仅仅意味着您可以将类型注册到具体的类中。 因此,我决定是时候学习和练习DI了。我理解这个概念,通过测试它是非常有益的。然而,让我困惑的是注册服务的想法以及它是否真的需要。 编辑 这个问题围绕着如何使用容器(服务)而不是为什么在构造函数中使用接口。

  • 问题内容: 好的,这可能有点钝了,但是Node.js的目的/需求是什么 我主要通过CloudFoundry注意到了它,但是不太确定它应该做什么。但是我猜想它可能相当大,因为为什么VMWare会支持它。 提前致谢。 问题答案: 这是一个… 高效且100%事件驱动的IO框架, 足够灵活,可以使用它可以找到的最佳基础操作系统功能, 以高级编程语言(客户端最有可能使用的相同语言)展示API, 在该语言的最

  • 我今天遇到了,我不确定我是否理解它的用途。。。在Spring文档中,它说 允许同一类处理多个请求类型的控制器实现。这个类的子类可以用表单的方法处理几种不同类型的请求 在另一个网站上,他们说 它将多个请求处理方法聚合到单个控制器中,因此相关功能可以很容易地保持在一起。 我仍然不明白扩展与下面的相比是更好还是不同?或者,更像是旧版本Spring的遗留产品?我觉得我有一些基本的误解。。。