Day 0・Reactってなに? — UIを部品で組み立てる
コンポーネント思考 — 画面を部品に分解する
Reactで作るときは、画面をいきなり作らず「部品に分解」して考える。Header・List・Itemのように役割で分けると、再利用・見通し・分担が楽になる。仮想DOMの役割も軽く押さえる。
画面を「部品の木」として見る
Reactで画面を作るとき、最初にやるのは「この画面をどんな部品に分けられるか」を考えることです。たとえばTODOリストの画面なら、全体を包む部分、上のタイトル、リスト全体、リストの中の1件…というように分けられます。それぞれをコンポーネントにします。
- Header(ページ上部のタイトルやメニュー)
- TodoList(TODOの一覧全体をまとめる部品)
- TodoItem(TODO1件分。TodoListの中で何度も使われる)
- Footer(ページ下部)
こうして分けた部品は、入れ子(ネスト)にして組み立てます。TodoListの中にTodoItemがいくつも入り、それらがApp(ページ全体)の中に入る、という木構造(ツリー)になります。この「部品を分解して組み立てる」考え方を、コンポーネント思考と呼びます。
function App() {
return (
<div>
<Header />
<TodoList />
<Footer />
</div>
);
}なぜ部品に分けると嬉しいのか
3つの利点があります。(1)再利用: TodoItemを1つ作れば何件でも使い回せる。(2)見通し: 1つの部品は小さいので中身を理解しやすい。(3)分担: 「あなたはHeader、私はTodoList」とチームで分けて作れる。大きな画面を1枚で書くと、これらが全部できなくなります。
たとえるなら、家を建てるときにドア・窓・壁を別々の規格部品として作り、それを組み合わせるのに似ています。ドアが壊れたらドアだけ直せばよく、窓には影響しません。Reactのコンポーネントも同じで、1つの部品を直しても他の部品を壊しにくいのが強みです。
仮想DOM — 名前と役割だけ
宣言的UIのレッスンで「状態が変わると画面を作り直す」と話しました。でも毎回本物の画面を全部書き換えたら重すぎます。そこでReactは「仮想DOM」という仕組みを使います。仮想DOMとは、本物の画面(DOM)の設計図をメモリ上に持つ軽いコピーのことです。
Reactは、状態が変わると新しい設計図(仮想DOM)を作り、前の設計図と見比べて「実際に変わったのはここだけ」と差分を見つけます。そして本物のDOMには、その変わった部分だけを反映します。これで、宣言的に「全部作り直す」ように書いても、実際の画面更新は最小限で済みます。今は「仮想DOM = 効率よく画面を更新するためのReactの内部の仕組み」とだけ覚えれば十分です。
仮想DOMは今は深追いしない
仮想DOMの詳しい仕組みは、Reactを使ううえで最初から理解する必要はありません。「なぜ宣言的に書いても速いのか」の答えが仮想DOMだ、という役割だけ押さえておけば大丈夫です。実装はReactがやってくれます。
AIにはこう聞く
「このTODO画面のワイヤーフレームを、Reactのコンポーネントにどう分割すべきか提案して。各コンポーネントの役割も添えて」と聞くと、部品分解の練習相手になってくれます。分割案が妥当かを自分で読めることが大事です。
- Reactでは、まず画面を役割ごとの部品(コンポーネント)に分解して考える
- 部品を入れ子にして木構造で組み立てる
- 部品化の利点は再利用・見通し・分担の3つ
- 仮想DOMは、変わった部分だけを効率よく本物のDOMに反映するReactの内部の仕組み
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
コンポーネントに分けて作ることの利点として、当てはまらないものはどれ?
「コンポーネント思考」とは何か、そして仮想DOMがなぜ必要かを、簡単に説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。