Согласно этой документации для 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
}
}
Теперь Дэн Абрамов, будучи значительным вкладчиком в Реакт, вероятно, знает, что он может определить состояние вне конструктора, но все же предпочитает делать это внутри конструктора.
Так что мне просто интересно, какой путь лучше и почему?