What is the difference between using constructor vs getInitialState in React / React Native?

Nader Dabit picture Nader Dabit · Jun 5, 2015 · Viewed 216.6k times · Source

I've seen both used interchangeably.

What are the main use cases for both? Are there advantages / disadvantages? Is one a better practice?

Answer

Alexandre Kirszenberg picture Alexandre Kirszenberg · Jun 5, 2015

The two approaches are not interchangeable. You should initialize state in the constructor when using ES6 classes, and define the getInitialState method when using React.createClass.

See the official React doc on the subject of ES6 classes.

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { /* initial state */ };
  }
}

is equivalent to

var MyComponent = React.createClass({
  getInitialState() {
    return { /* initial state */ };
  },
});