调试疯狂的 React 库代码行

Debugging crazy React library line of code

我正在尝试使用这个有点像为 React 选择的 React 插件。这是完整存储库的 link:https://github.com/JedWatson/react-select。我在那里的一条疯狂线路上遇到错误,并且无法弄清楚问题是什么以及如何解决它。我是 运行 React .11.2。如有任何帮助,我们将不胜感激!

这是它似乎失败的行:

React.createElement("span", { className: "Select-clear", title: this.props.multi ? this.props.clearAllText : this.props.clearValueText, "aria-label": this.props.multi ? this.props.clearAllText : this.props.clearValueText, onMouseDown: this.clearValue, onClick: this.clearValue, dangerouslySetInnerHTML: { __html: "×" } })

并给我一个错误:

Uncaught TypeError: undefined is not a function

内部:

// Specifying arguments isn't necessary since we just use apply anyway, but it
// makes it clear for those actually consuming this API.
function createDescriptor(type, props, children) {
  var args = Array.prototype.slice.call(arguments, 1);
  return type.apply(null, args);
}

它在 react-with-addons.js 中,它的 type var 失败了。它接收一个字符串 "span"。关于如何解决这个问题有什么想法吗?

createElement 是在 0.12 中引入的,所以如果不向后移植它就不可能在 0.11 中工作。

这样做,它看起来像这样:

React.createElement = function(tag){
   var rest = Array.prototype.slice.call(arguments, 1);
   if (typeof tag === 'function') {
       return tag.apply(undefined, rest);
   }
   else if (typeof tag === 'string' && React.DOM[tag]) {
       return React.DOM[tag].apply(undefined, rest);
   }
   else {
       console.error('React.createElement() expects a HTML tag name or ' 
           + 'component as the first argument, but got (%s) %s',
           String(tag), 
           typeof tag
       );
       return null;
   }
};

// partially applies createElement
React.createFactory = function(tag){
   return React.createElement.bind(null, tag);
}

最后一个例子也会出错'my-custom-element',0.11 完全不支持,也无法伪造。