【发布时间】:2018-08-07 12:20:42
【问题描述】:
我有一个对象列表,我想使用 React 将其呈现为列表。
React 需要列表元素上的特殊 key 属性来跟踪 DOM 和虚拟 DOM 之间的变化。
我的对象没有像id这样的特殊的唯一属性,事实上,两个对象甚至可以具有相同的属性,但对象本身是唯一的。
有没有办法使用对象的引用作为渲染 React 列表的键?
否则,在这种情况下可以建议哪些解决方法?
另外,我从第三方接收项目列表,所以我不能只为每个项目附加一个随机 ID,因为它会使 React 在我每次收到更新数据时重新渲染所有项目.
【问题讨论】:
-
我建议生成随机 id。例如来自lodash
-
在钥匙上附加一个计数器?
-
通常的做法是为您的对象附加一个“虚拟”id,或者如果数组元素的顺序不会改变,您可以使用index of the array as key as last resort。
-
每次渲染生成一个随机 ID 是没有意义的,您应该在创建对象/从服务器接收它们时生成它们(或者只是在服务器上进行)
-
如果我在收到每个项目时将生成的虚拟 ID 附加到每个项目上,React 会不会在我收到更新数据时重新渲染所有项目?