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

【React】公式ページの"Reactの流儀"を勉強

Posted at

はじめに

React公式ページの"Reactの流儀"を勉強したので備忘録を残します。
図解に挑戦してみました。きちんと図で表現するのは難しいですね。図にしてみると、文字だけで理解したような気になっていたものが炙り出されて色々な気づきがありました。

UI をコンポーネントに分割する

  1. モックアップのすべてのコンポーネントとサブコンポーネントを四角で囲んで、それぞれに名前を付けていく(単一責任の原則。1つのコンポーネントに一つの機能)
  2. コンポーネントを階層構造に整理する
    Reactの流儀_図のみ-コンポーネントへの分解.jpg

Reactで静的なバージョンを作成する

  • コンポーネントを作成していく際に、他のコンポーネントを再利用しつつprops(親から子にデータを渡す手段。関数に渡す引数のようなもの) 経由でそれらにデータを渡すようにする
  • Don't use "state" yet! state はインタラクティビティ、つまり時間とともに変化するデータのためにあるもの
  • 通常、シンプルな例ではトップダウンで作業する方が簡単であり、大規模なプロジェクトではボトムアップで進める方が簡単
    Reactの流儀_図のみ-静的なバージョンの作成.jpg

UI の状態を最小限かつ完全に表現する方法を見つける

  • UI をインタラクティブにするには、ユーザが背後にあるデータモデルを変更できるようにする必要がある。これにはstateというものを使用する
  • state はコンポーネントのメモリのようなもの。コンポーネントが情報を追跡し、ユーザ操作に反応して変更できるようにする
  • stateであるべきもの
    • 記憶する必要がある
    • 変化する
    • 最小限のセットである(DRY(Don’t Repeat Yourself))
  • stateでないもの
    • 時間が経っても変わらないもの
    • 親から props 経由で渡されるもの
    • コンポーネント内にある既存の state や props に基づいて計算可能なもの
      Reactの流儀_図のみ-UIの状態を表現する.jpg

stateを保持すべき場所を特定する

  1. その state に基づき何かをレンダーする全てのコンポーネントを特定する
  2. 階層内でそれら全ての上に位置する、最も近い共通の親コンポーネントを見つける
  3. state をどこで保持すべきか決める
    • 多くの場合、共通の親に直接置くことができる
    • その共通の親のさらに上にあるコンポーネントに置くこともできる
    • 適切なコンポーネントが見つからない場合は、state を保持するためだけの新しいコンポーネントを作成し、共通の親コンポーネントの階層の上のどこかに追加する
  4. 親コンポーネントは state として情報を保持し、その情報を子コンポーネントに props として渡す
    Reactの流儀_図のみ-state を保持すべき場所.jpg

逆方向のデータフローを追加する

  • ユーザがフォームの内容を変更するたびに、state がそれらの変更を反映して更新されるようにするには、逆方向へのデータの流れ(子から親へ)をサポートする必要がある
  • stateを持つコンポーネントのみがstateの値をセットする関数を呼び出すことができる。よって、フォームを持つコンポーネントがstateを更新できるようにするには、これらの関数を渡す必要がある
  • フォームを持つコンポーネントの中にイベントハンドラを追加し、それから渡された関数を呼び出すことで、stateを設定する
    Reactの流儀_図のみ-逆方向のデータフローを追加する.jpg

参考

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