Подтвердить что ты не робот

Конструктор реакций ES6 vs ES7

Я прочитал на странице справочников React, что ES6 будет использовать функции конструктора для инициализации состояния следующим образом.

export class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {count: props.initialCount};
  }
  tick() {
    this.setState({count: this.state.count + 1});
  }
  render() {
    return (
      <div onClick={this.tick.bind(this)}>
        Clicks: {this.state.count}
      </div>
    );
  }
}
Counter.propTypes = { initialCount: React.PropTypes.number };
Counter.defaultProps = { initialCount: 0 };

Затем он продолжает использовать синтаксис ES7 для достижения того же.

// Future Version
export class Counter extends React.Component {
  static propTypes = { initialCount: React.PropTypes.number };
  static defaultProps = { initialCount: 0 };
  state = { count: this.props.initialCount };
  tick() {
    this.setState({ count: this.state.count + 1 });
  }
  render() {
    return (
      <div onClick={this.tick.bind(this)}>
        Clicks: {this.state.count}
      </div>
    );
  }
}

Почему ES7 лучше, чем версия ES6 или версия ES5.

Спасибо

4b9b3361

Ответ 1

ES7 лучше, потому что он позволяет использовать следующие сценарии:

  • Если декларативная интерпретация ожиданий полезна. Некоторые примеры включают в себя редакторы, чтобы они могли использовать эту информацию для typeaheads/inference, TypeScript/Flow может использовать это, чтобы позволить своим пользователям выражать намерения о формах своих классов.
  • Предоставление общим пользователям возможности использовать это только для правдоподобной документации о свойствах, отдельно от потенциально сложной логики инициализации.
  • Возможно, позволяют виртуальным машинам упреждающую оптимизацию объектов, созданных из класса, с некоторыми из этих намеков на них.

Примечание. Когда вы определяете свое состояние с помощью ES7, вы используете Property initializers функцию

Ссылки: 1