1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

時計の作り方~React HPより~

Last updated at Posted at 2020-06-20

ReactのHPでは,チュートリアルなど様様な情報を提供しています.
その中で,メインコンセプトとして,「stateとライフサイクル」というページで時計を作っているのですが,見ても書いてもよくわからないので,登場するコードについてまとめてみます.

完成形

HPに書いてある以下のコードを書くと,こんな感じのリアルタイムで時間が表示される時計が作れます

image.png

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

ReactDOM.render(
  <Clock />,
  document.getElementById('root')
);

わからないこと

上記のコードでよくわからなかった,以下を調べてみました

toLocaleTimeString

Dateオブジェクトメソッドの一つ
※日付や時間の取得や設定を行うオブジェクト

toLocaleTimeStringは地域情報に従って時刻部分を文字列で取得するメソッド
同様に,文字列変換のメソッドをいかにまとめる

書式 意味
toDateString 日付部分を文字列で取得
toTimeString 時間部分を文字列で取得
toLocaleDateString 地域情報に従って日付部分を文字列で取得
toLocaleTimeString 地域情報に従って時刻部分を文字列で取得
toString 日付を文字列で取得

componentDidMountとcomponentWillUnmount

ライフサイクルメソッドの一つそうです.

#####ライフサイクルメソッドってなんやねん

たくさん書いてあるコードにも,実行する順番があるらしいです.
ライフサイクルメソッドとは,処理過程の特定の時点でコードを実行するためのメソッドのことです.
この処理過程とメソッドの関係は↓の図のようになるそうです.
image.png

この関係を見ると,今までよくわからずに書いていたcontructorやrenderの意味が分かりますね

##conponentDidMount
ComponentがMountされた後に実行されるメソッドで,主な用途は以下です.
・Ajaxを使ったデータフェッチを行う(初回)
・DOMに対する処理を行う(初回)
・タイマーをセットする
・イベントリスナのセット

今回のコードは,タイマーをセットしているですね.

一度設定したら,componentWillUnmount()で解除することを忘れない

##componentWillUnmount
componentがUnmountされる時に実行される.主な用途は以下です.
・タイマーを解除する
・イベントリスナを解除する
・非同期処置を中止する

setInterval

一定時間が経過するごとに処理を実行するメソッドです.
書き方は,setInterval(関数,処理間隔)
ここにおける処理間隔の単位はミリ秒です.

今回のコードでは,1秒ごとに()=>this.tick()を実行していることが分かりますね.

つまり,
####同じ時間で止まらずに,更新し続けている
のはこのメソッドのおかげなんですね.

clearInterval

setInterval()でセットしたタイマーを解除するメソッドです.
書き方は,clearInterval(止めたいタイマーID)

#参考
React HP
JavaScript入門講座
React Componentライフサイクルひとめぐり
【JavaScript入門】setIntervalの使い方まとめ

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?