Reactjs React:我应该使用什么来代替“索引”中的数组索引;“关键”;道具
我理解为什么不应该在Reactjs React:我应该使用什么来代替“索引”中的数组索引;“关键”;道具,reactjs,Reactjs,我理解为什么不应该在键中使用数组索引。有很多现有的SO答案和博客文章解释了这是如何导致bug的 但是我找不到太多关于如何做的建议。标准建议只是“使用唯一标识项目的ID”-但如果没有这样的唯一ID,该怎么办 假设您承担了编写组件的任务,组件将被传递一个项目数组(没有任何可以用作唯一ID的内容),您需要映射该数组以呈现DOM节点列表。在这种情况下你应该怎么做 选项: 只需将数组索引用作键,并抑制你的linter的警告 根本不要设置键道具。(但是React会在运行时给你一个警告——除非有办法选择退出
键中使用数组索引。有很多现有的SO答案和博客文章解释了这是如何导致bug的
但是我找不到太多关于如何做的建议。标准建议只是“使用唯一标识项目的ID”-但如果没有这样的唯一ID,该怎么办
假设您承担了编写组件的任务,组件将被传递一个项目数组(没有任何可以用作唯一ID的内容),您需要映射该数组以呈现DOM节点列表。在这种情况下你应该怎么做
选项:
- 只需将数组索引用作
键
,并抑制你的linter的警告
- 根本不要设置
键
道具。(但是React会在运行时给你一个警告——除非有办法选择退出这个警告?)
- 还有别的吗
“没有任何可以用作唯一ID的东西”这种情况非常罕见。通常,您确实有一些东西以某种方式标识列表中的项目。无论如何,您可以使用某种风格的guid
为每个项分配一些合成id。任何JS迭代器都会为您提供项和索引,将该索引用作唯一键。这是非常明显和重要的simple@Amir-Mousavi不,您不应该在React中使用数组索引作为键
,关于原因有很多讨论。你所提到的讨论是无效的,因为在中间出现的其他东西会破坏索引的顺序,显示出糟糕的体系结构:)不应该发生+ MeMuMeWeb不是一个好的编程源,如果你有嵌套的映射,对于第一个映射,你可以拥有嵌套代码“代码> {索引x1} <代码> >嵌套的代码>密钥= ${Index 1}-${index2}
等等