6
2

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 5 years have passed since last update.

ReactでuseStateを上手く扱うにはどのように書くのがベストか

6
Posted at

Hooks を使ってコードを書いていると、useState()の宣言が多くなってしまってごちゃごちゃしてしまうことがある。
このような問題に直面した時にどのように書いていくのが良いのだろうか。

単純に書いた場合、Class Component に慣れている方は、stateをまとめて宣言した方が見栄えが良いと思われるかもしれない。
これについてReactのドキュメントのFAQを読むと、次のように書いてある。

すべての state を 1 つの useState 呼び出しに含めても動作しますし、フィールドごとに別に useState を持たせることでも動作はします。しかしこれらの両極端の間でうまくバランスを取り、少数の独立した state 変数に関連する state をグループ化することで、コンポーネントは最も読みやすくなります。state のロジックが複雑になった場合は、それをリデューサで管理するか、カスタムフックを書くことをお勧めします。

つまり、基本的に少数の独立した state に分割して宣言することで、Custom Hook を作りやすくなり、リファクタリングしやすくなったり、コードが見やすくなるのである。

また、「どうにも上手くグループ分けができず、汚くなってしまった。」という時に限ってuseReducer()を使って、処理をまとめるのが良いと考える。

それ以外にもuseReducer()の利用場面として、以下のような場面がある。

そのため、次のようなステップでコードを書いていくのが良いと思われる。

  1. const x = useState(0);のように独立させて宣言してみる
  2. const [position, setPosition] = useState({ x: 0, y: 0});のようにして役割ごとにまとめてみる
  3. それでも上手くいかない場合は、useReducer()を使うというようにしたほうが共通化しやすいと考える。

メモ程度にまとめてみました!
間違っている所や他に意識しているようなことがあれば教えていただけたら嬉しいです。

6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?