Почему внутренняя реализация React.Component является функцией, а не классом ES6? - PullRequest
0 голосов
/ 19 марта 2019

Я копался в кодовой базе 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?

1 Ответ

1 голос
/ 19 марта 2019

https://caniuse.com/#search=es6%20class

Это связано с совместимостью браузера.Обеспечение возможности выполнения кода там, где синтаксис class не поддерживается, без необходимости переносить что-то вроде Babel.

...