docs: function warnAndMonitorForKeyUse(message, element, parentType) {
    var ownerName = getCurrentOwnerDisplayName();
    var parentName = typeof parentType === 'string' ?
      parentType : parentType.displayName || parentType.name;
  
    var useName = ownerName || parentName;
    var memoizer = ownerHasKeyUseWarning[message] || (
      (ownerHasKeyUseWarning[message] = {})
    );
    if (memoizer.hasOwnProperty(useName)) {
      return;
    }
    memoizer[useName] = true;
  
    var parentOrOwnerAddendum =
      ownerName ? (" Check the render method of " + ownerName + ".") :
      parentName ? (" Check the React.render call using <" + parentName + ">.") :
      '';
  
    // Usually the current owner is the offender, but if it accepts children as a
    // property, it may be the creator of the child that's responsible for
    // assigning it a key.
    var childOwnerAddendum = '';
    if (element &&
        element._owner &&
        element._owner !== ReactCurrentOwner.current) {
      // Name of the component that originally created this child.
      var childOwnerName = getName(element._owner);
  
      childOwnerAddendum = (" It was passed a child from " + childOwnerName + ".");
    }
  
    ("production" !== process.env.NODE_ENV ? warning(
      false,
      message + '%s%s See https://fb.me/react-warning-keys for more information.',
      parentOrOwnerAddendum,
      childOwnerAddendum
    ) : null);
  }