build/web/c0.js
function validateChildKeys(node, parentType) {
  if (Array.isArray(node)) {
    for (var i = 0; i < node.length; i++) {
      var child = node[i];
      if (ReactElement.isValidElement(child)) {
        validateExplicitKey(child, parentType);
      }
    }
  } else if (ReactElement.isValidElement(node)) {
    // This element was passed in a valid location.
    node._store.validated = true;
  } else if (node) {
    var iteratorFn = getIteratorFn(node);
    // Entry iterators provide implicit keys.
    if (iteratorFn) {
      if (iteratorFn !== node.entries) {
        var iterator = iteratorFn.call(node);
        var step;
        while (!(step = iterator.next()).done) {
          if (ReactElement.isValidElement(step.value)) {
            validateExplicitKey(step.value, parentType);
          }
        }
      }
    } else if (typeof node === 'object') {
      var fragment = ReactFragment.extractIfFragment(node);
      for (var key in fragment) {
        if (fragment.hasOwnProperty(key)) {
          validatePropertyKey(key, fragment[key], parentType);
        }
      }
    }
  }
}
function validateChildKeys(node, parentType) {
  if (Array.isArray(node)) {
    for (var i = 0; i < node.length; i++) {
      var child = node[i];
      if (ReactElement.isValidElement(child)) {
        validateExplicitKey(child, parentType);
      }
    }
  } else if (ReactElement.isValidElement(node)) {
    // This element was passed in a valid location.
    node._store.validated = true;
  } else if (node) {
    var iteratorFn = getIteratorFn(node);
    // Entry iterators provide implicit keys.
    if (iteratorFn) {
      if (iteratorFn !== node.entries) {
        var iterator = iteratorFn.call(node);
        var step;
        while (!(step = iterator.next()).done) {
          if (ReactElement.isValidElement(step.value)) {
            validateExplicitKey(step.value, parentType);
          }
        }
      }
    } else if (typeof node === 'object') {
      var fragment = ReactFragment.extractIfFragment(node);
      for (var key in fragment) {
        if (fragment.hasOwnProperty(key)) {
          validatePropertyKey(key, fragment[key], parentType);
        }
      }
    }
  }
}
function validateChildKeys ( node , parentType ) { if ( Array . isArray ( node ) ) { for ( var i = 0 ; i < node . length ; i ++ ) { var child = node [ i ] ; if ( ReactElement . isValidElement ( child ) ) { validateExplicitKey ( child , parentType ) ; } } } else if ( ReactElement . isValidElement ( node ) ) { // This element was passed in a valid location. node . _store . validated = true ; } else if ( node ) { var iteratorFn = getIteratorFn ( node ) ; // Entry iterators provide implicit keys. if ( iteratorFn ) { if ( iteratorFn !== node . entries ) { var iterator = iteratorFn . call ( node ) ; var step ; while ( ! ( step = iterator . next ( ) ) . done ) { if ( ReactElement . isValidElement ( step . value ) ) { validateExplicitKey ( step . value , parentType ) ; } } } } else if ( typeof node === 'object' ) { var fragment = ReactFragment . extractIfFragment ( node ) ; for ( var key in fragment ) { if ( fragment . hasOwnProperty ( key ) ) { validatePropertyKey ( key , fragment [ key ] , parentType ) ; } } } } }
Ensure that every element either is passed in a static location, in an
array with an explicit keys property defined, or in an object literal
with valid key property.

@internal
@param {ReactNode} node Statically passed child of any type.
@param {*} parentType node's parent's type.
Ensure that every element either is passed in a static location in an array with an explicit keys property defined or in an object literal with valid key property .