<div id="react-container"></div>
class App extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      messageConstructor: 'stateが初期化されました。',
      messageMount: '',
      messageUpdate: '',
      count: 0,
    }
  }

  messageMountFunc = () => {
    this.setState({
      messageMount: 'componentDidMountが実行されました。',
      messageUpdate: 'componentDidUpdateが実行できます。'
    });
  }

  componentDidMount() {
    setTimeout(this.messageMountFunc, 3000);
  }

  componentDidUpdate() {
    document.getElementById('counter').addEventListener('click', this.countUp);
  }

  countUp = () =>{
    this.setState({'count': this.state.count + 1})
  }

  render() {
    return (
      <div>
        <div>【constructor()】{this.state.messageConstructor}</div>
        <hr />
        <div>【componentDidMount()】{this.state.messageMount}</div>
        <hr />
        <div>【componentDidUpdate】{this.state.messageUpdate}</div>
        <div>{this.state.count}</div>
        <button id="counter">Count Up</button>
      </div>
    )
  }
}

ReactDOM.render(< App />, document.getElementById('react-container')); 
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js