没有构造函数在类的体内声明状态

Cas*_*Lim 5 javascript ecmascript-6 reactjs

我在某处看到了下面的代码,我很好奇.看起来很干净,但对我来说很不寻常 为什么state = {}声明没有构造函数?

load声明没有函数关键字?据我所知,有一些方法可以编写函数

function async load() {} 要么 const async load = ()=>{}

什么...args呢?它传播了arguments吗?

import View from './View';
import loadData from './loadData';
export default class extends Component {
  state = {};
  load = this.load.bind(this);
  async load(...args) {
    try {
      this.setState({ loading: true, error: false });
      const data = await loadData(...args);
      this.setState({ loading: false, data });
    } catch (ex) {
      this.setState({ loading: false, error: true });
    }
  }
  render() {
    return (
      <View {...this.props} {...this.state} onLoad={this.load} />
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Haz*_*erd 2

state = {}声明是一个类属性,目前不是 JavaScript 语言的一部分。某些实用程序(例如 Babel)会将其编译为合法的 JavaScript 代码。

然而,类中缺少function关键字以及...运算符是 ECMAScript 6 的一部分,它已正式实现到该语言中(尽管某些浏览器尚无法识别它)。

类定义
扩展运算符