【react】reactのcomponentDidUpdate機能をおさらい

  • 2021年3月10日
  • 2021年3月10日
  • React

お題

reactのcomponentDidUpdate機能をおさらい

最近reactでhook昨日のuseeffectなるものの使い方を学びがてら現在のreactの

ライフサイクルのおさらいをしていました。

hookのuseeffectとは、componentDidmountとcomponentDidUpdateとcomponentWillmoutの

機能を一つにまとめたものらしくこの関数一つで三つの役割を持つことができて

ここで更新された値をごにょごにょする・管理がかなり楽になることのこと。

そこでふと「componentDidUpdateってどんな関数だっけ?」と思ったので復習がてら

使い方をググることに。

componentDidmountしかまともに使っていなかったのでどんな関数だっけと戸惑いながら

componentDidUpdateの使い方をおさらいすることにしました。

どんな関数?

componentDidUpdateとは、setStateで何かの値が更新された後に呼ばれる関数のこと。

メリット

・更新後の値を一番安全に取ることができる場所

・更新前の値を拾うことができる

・componentDidUpdate内でsetStateしても余計な描画をしないのでユーザーに違和感を与えない

基本的な使い方

componentDidUpdate(prevState) {
  if (this.state.name !== prevState.name) {
    console.log("nameが変更されました")
  }
}

注意点

基本的には更新前の値と更新後の値を比較して何か作業を追加するのが主です。

正しく比較しないとupdate->setState->render->update->setState->renderと無限ループを

起こすので必ず更新前の値と更新後の値を正しく比較した上で処理を追加する必要があります。

まとめ

何か更新されたあとの結果次第で処理を追加したい時は実装するべきだと思います。

使い方がシビアで、何も考えずに実装するとループを起こしたりバグを生んだりとややめんどうな

動きですが現状では更新後の比較を安全にできるのがこの関数だけなのでまあ妥協です。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG