0
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 Hooksの10種類を理解する(Basic: useEffect)

Posted at

React Hooksの10種類を理解する(Basic: useEffect)

useEffectの基本

  • 「DOMの書き換え(mutation)」「データ購読(subscriptions)」「timer」「logging」などの副作用(side effects) においては、UIにまつわるバグや非整合性を引き起こす原因となる。そのため、関数component本体(React Render Phase)で描写することはできない。そのような場合に使用するのがuseEffectになる。
  • useEffectに渡された関数は、renderが画面に描写された後に動作する。
  • componentDidMountcomponentDidUpdateの2つの機能を持ったhookである。

effectの初期化(cleanup)

useEffect(() => {
  const subscription = props.source.subscribe();
  return () => {
    subscription.unsubscribe();
  };
});
  • 上記の例では、更新がされるたびに新しいsubscriptionが作成されることになる。
  • 前回のeffectは、次回のeffectが実行される前にcleanupされる。

条件付きでuseEffectを実行

useEffect(
  () => {
    const subscription = props.source.subscribe();
    return () => {
      subscription.unsubscribe();
    };
  },
  [props.source],
);
  • 上記の例だと、useEffectの第2引数として、[props.source]が設定されている。こうすることによって、props.sourceが更新されたときのみuseEffectを実行するようになる。
  • 空配列([])の場合、mount時にeffectが実行され、unmount時にcleanupされるが、更新時には実行されないことになる。

reference

0
1
0

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
0
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?