It might be because of the speed that ReactJS is developing, or just some mis-information, but when reading articles about how to set the state, I usually come across different ways.
In the constructor
class MyComponent extends React.Component {
    constructor(props) {
        super(props);
        this.state = { ... }
    }
}
Directly in the class
class MyComponent extends React.Component {
    state = { ... }
}
In ComponentWillMount
class MyComponent extends React.Component {
    ComponentWillMount() {
        this.state = { ... }
    }
}
This diversity of options confuses me often, and makes it hard for me to decide how I should set the state in my components.
My question is: Is there any difference between these methods to set the state? If so, what are the advantages and disadvantages of each?