【发布时间】:2021-09-20 20:49:31
【问题描述】:
我最近一直在研究 React 中元素键的重要性,但我仍然对此感到有些困惑。
我有这种情况,其中有 datagrid 组件负责按行显示数据。实现了排序、过滤和分页。我从 api 获取行数据。
问题是: 我应该如何正确选择地图功能元素(行)的键?
问题是已经获取的行数据可以在刷新之间改变(被其他用户编辑)。
我应该为关键属性使用唯一的 ID(例如 nanoid)还是使用 row.id?
如果我理解正确,即使更改了某些行数据,使用 row.id 也不会对已加载的行进行行重新渲染。 另一方面,使用唯一 ID(如 nanoid)会对排序、过滤等时的性能产生负面影响...?
我做对了吗,然后如何正确地做到这一点?
【问题讨论】:
-
最重要的是你应该选择一个stable键。该行独有的东西不会改变。 ID 是一个完美的选择。
-
如果我理解正确,即使更改了某些行数据,使用 row.id 也不会重新渲染已加载的行。 - 这是不正确的。这仅意味着 React 在决定是否需要重新渲染/安装/卸载时可以正确识别您的行。正常的重新渲染规则适用,如果状态或道具发生变化,它将重新渲染。
-
我通常将描述项目本身的单词和它的索引(来自
.map(item, index))连接起来,例如:<tr key={`row-${indexrow} `}>和<td key={`cell-${indexCell}`}>。但是,如果您有任何cell.id或row.id也可以添加它
标签: javascript reactjs key