Async componentDidMount

HTML

<script src="https://unpkg.com/react@15/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>
<div id="app"></div>

Babel + JSX

class App extends React.Component {
  constructor(props, context) {
    super(props, context)
    this.state = { counter: 0 }
  }

  async componentDidMount() {
    await new Promise(resolve => setInterval(resolve, 1000))
    this.setState({ counter: this.state.counter + 1 })
  }

  render() {
    return <h1>Hello World! {this.state.counter}</h1>
  }
}

ReactDOM.render(<App />, document.getElementById('app'))