我的印象是 ES6 类基本上是围绕 ES5 对象系统的语法糖。当我试图在没有转译器的情况下运行 React 时,我认为我可以使用旧语法来定义从 React.Component “继承”的对象“类”。
var Board = function(props, state) {
var instance = {};
instance.props = props;
instance.context = state;
return(instance);
};
Board.prototype = Object.create(React.Component.prototype);
Board.prototype.render = function() {
return(
// ...stuff
)
};
但这不起作用!
react.js:20478 Warning: Board(...): No `render` method found on the returned component instance: you may have forgotten to define `render`
react.js:6690 Uncaught TypeError: inst.render is not a function(…)
我在这个 gist 中找到了替代方案,并且以下工作:
var Board = function(props, state) {
var instance = Object.create(React.Component.prototype);
instance.props = props;
instance.context = state;
instance.prototype.render = function() {
return(
// ...stuff
)
};
return(instance);
};
我还发现我可以使用React.createClass
助手。
但我仍然想了解为什么 React 不能处理以这种通用方式定义的类。在我看来,ES6 类在使用之前就已经实例化了。我看不出为什么 ES5 风格的类也不会被实例化,结果相似。