Closed5

カスタムフックの使い方を考えてみる

ishiyamaishiyama

カスタムフックも本質的には引数を渡したらそれに対応した値を返すただの関数だと思う。
関数で最も大切なことはカプセル化されていることで、カプセル化は内部実装を見なくてもその関数の使い方が直感的に理解でき、意図せぬ副作用を起こさないことだと思っている。
カプセル化されていると、それの内部実装はあまり気にならない。

ishiyamaishiyama

関数は関心事が一致している処理を切り出すものであり、そこが曖昧になると曖昧な関数になり、適切な命名をすることができず、知らない人から見ると「使いづらい」関数になってしまう。

ishiyamaishiyama

上記のルールを守っている限り、カスタムフックへの切り出しは積極的に行って良いと思う。
たとえばuseStateを初め、標準で用意されているフックは表現力が乏しい。
例えば以下の処理。

  • 1度しか変更できないステート管理
  • 何か進行中のフラグ管理
  • 上限が決まっている配列管理

こういった処理は、一連の処理の中に useState として宣言されていても、どういった関心事に関与していて、どのような処理を行っているか追いずらい。
適切に命名してカスタムフックに切り出すべきだと思う。

ishiyamaishiyama

そして、適切にカプセル化されていると内部実装はあまり気にならない。(2回目🤧)
「1度しか変更できないステート管理」を例にすると、内部で useReducer を使用していても、useState を使用してもどちらでもよく、大切なことは適切な命名で切り出し、「1度しか変更できない」という情報がカスタムフックを使用した変数宣言で理解できることが大切だと思っている。

このスクラップは2022/12/02にクローズされました