小编典典

在构造函数中定义状态还是使用属性初始化程序更好?

reactjs

根据这份 babel文档,将ES6
+与React结合使用的正确方法是对初始组件进行如下处理:

class Video extends React.Component {
  static defaultProps = {
    autoPlay: false,
    maxLoops: 10,
  }
  static propTypes = {
    autoPlay: React.PropTypes.bool.isRequired,
    maxLoops: React.PropTypes.number.isRequired,
    posterFrameSrc: React.PropTypes.string.isRequired,
    videoSrc: React.PropTypes.string.isRequired,
  }
  state = {
    loopsRemaining: this.props.maxLoops,
  }
}

但是一些官方示例,例如Dan Abramov自己的React DnD模块,使用ES6
+,但仍在构造函数中定义状态:

constructor(props) {
    super(props);
    this.moveCard = this.moveCard.bind(this);
    this.state = {
       // state stuff
    }
}

现在,作为React的重要贡献者的Dan Abramov可能知道他可以在构造函数之外定义状态,但仍然选择在构造函数内完成状态。

所以我只是想知道哪种方法更好,为什么呢?


阅读 351

收藏
2020-07-22

共1个答案

小编典典

我认为这是个人喜好问题。就语义而言,转译的输出是相同的。

2020-07-22