用于映射任意字符串的React键的约定

时间:2018-05-21 04:08:36

标签: javascript reactjs

React documentation

  

“key”是创建元素列表时需要包含的特殊字符串属性。

大多数类似数据的数据都以唯一标识符的形式具有“自然”键。但是,使用任意字符串时,情况并非如此。

考虑这个用例(我已经多次遇到过):API响应或其他外部源返回带换行符的字符串。您希望将每一行渲染为其自己的<p>元素。

render() {
  const text = 'Hello\nworld';
  return text.split('\n').map((line) => (<p>{line}</p>));
}

每个<p>都需要一个密钥。最明显的非索引键是line,但它不一定是唯一的。输入很可能是'Hello\nHello\nworld\nHello

唯一合理的选择似乎是使用数组索引作为键,但人们普遍认为这是不好的做法:请参阅Index as a key is an anti-pattern,甚至还有一个非常流行的ESLint规则react/no-array-index-key执行此。

这种情况下的关键约定是什么?我很想使用索引作为键并禁用ESLint规则,但这绝对是最后的手段。

0 个答案:

没有答案