Реагируйте: уникальная «ключевая» опора не применяется к строкам таблицы? - PullRequest
0 голосов
/ 20 мая 2018

React использует ключевую опору для идентификации элементов и правильного примирения.Следующий код выдаст консольные предупреждения Warning: Each child in an array or iterator should have a unique "key" prop.

const List = () => 
  <ul>
    {[...Array(3)].map((_, idx) => <li>{idx}</li>)}
  </ul>

Хотя этого не будет

const Table = () => 
  <table>
    <tbody>
      {[...Array(3)].map((_, idx) => <tr><td>{idx}</td></tr>)}
    </tbody>
  </table>

Почему при использовании строки таблицы не требуется поддержка уникального ключа?

1 Ответ

0 голосов
/ 20 мая 2018

Ключ Uniq требуется для каждого дочернего элемента в массиве или итераторе, поэтому вы, вероятно, проверяете неправильно.Для реакции не имеет значения тип HTML-тега.

// react.development.js
function validateChildKeys(node, parentType) {
  if (typeof node !== 'object') {
    return;
  }
  if (Array.isArray(node)) {
    for (var i = 0; i < node.length; i++) {
      var child = node[i];
      if (isValidElement(child)) {
        validateExplicitKey(child, parentType);
      }
    }
  }
...