Selon cette babel de la documentation, de la façon correcte d'utiliser ES6+ à Réagir est de composants initiaux comme ceci:
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,
}
}
Mais certains exemples, comme Dan Abramov propre Réagir Mdn module utilise ES6+ mais encore définit l'état dans le constructeur:
constructor(props) {
super(props);
this.moveCard = this.moveCard.bind(this);
this.state = {
// state stuff
}
}
Maintenant, Dan Abramov, d'être un contributeur important à Réagir, ne sait probablement qu'il peut définir un état hors de l'constructeur, mais encore choisit de le faire dans le constructeur.
Donc, je me demande juste où est le mieux et pourquoi?