Я копался в кодовой базе React и обнаружил, что когда вы пишете class App extends React.Component
, вы фактически расширяете объект, созданный следующей функцией:
function Component (props, context, updater) {
this.props = props;
this.context = context;
this.refs = {};
// We initialize the default updater but the real one gets injected by the
// renderer.
this.updater = updater || ReactNoopUpdateQueue ;
}
Component.prototype.isReactComponent = {};
Component.prototype.setState = function(partialState, callback) {
this.updater.enqueueSetState(this, partialState, callback, 'setState')
}
Component.prototype.forceUpdate = function(callback) {
this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
}
ЧтоПреимущество создания классов таким способом по сравнению с написанием класса ES6?