【React】hookを使うときのルール

こちらの書籍より学ばせていただいたことをまとめています。

書籍の説明

書籍名: Reactハンズオンラーニング 第2版 ―Webアプリケーション開発のベストプラクティス
著者: Alex Banks 著
出版社: オライリージャパン 発行
発売日: 2021/8/6

Reactのhookを使う際の3つのルールをまとめました。

ルール1:分割する

ひとつのhookに多くの役割を持たせない。

これはなぜかというと、

コンポーネントが描画されると、Reactはhookの戻り値および依存配列を内部的な配列に格納します。

それによりReactはどの値が変化したか検知ができるような構造になっています。

そのため、役割ごとにhookを分割することで、処理の実行順を指定することができるというわけです。

ただ見やすいからという理由ではないんですね!

ルール2:hookは描画関数のトップレベルから呼び出す

hookをif文やfor文などの中から呼び出すことはできない。

なぜできないかというと、そのような使い方では、条件によってコンポーネントが呼び出すhookの数が変わってしまうためReactが値を管理できなくなってしまうから。

ルール3:非同期呼び出しはできない

hookを非同期呼び出しすることはできない。

しかし例外として、useEffectで副作用の中にasync呼び出しを記述することは可能

useEffect(() => {
  const fn = async () => {
    await SomePromise();
  };
  fn();
});

以上、お読みいただきありがとうございました。

コメント