Day 0・Reactってなに? — UIを部品で組み立てる
宣言的UI — 「状態」を書けば画面はReactが合わせる
Reactの核心は「宣言的UI」。どう変えるか(手順)ではなく、どういう状態か(結果)を書くと、Reactが画面をその状態に合わせてくれる。命令的なDOM操作と比べて直感をつかむ。
「手順」ではなく「状態」を書く
Reactの一番大事な考え方が「宣言的UI」です。少し難しい言葉ですが、意味はシンプルです。「画面をどう変えるか(手順)」を書くのではなく、「今どういう状態なら、画面はこう見える」という関係だけを書きます。あとはReactが、状態に合わせて画面を自動で更新してくれます。
命令的 vs 宣言的の違い
命令的(imperative)は「料理の手順書」。手を洗って、鍋を出して、水を入れて…と1つずつ指示します。宣言的(declarative)は「完成した料理の写真」。こういう状態にしてほしい、と結果だけ伝えて、作り方はReactに任せます。
たとえばカウンター(数字が増えるボタン)を考えます。命令的なやり方では、ボタンが押されるたびに「今の数字を取り出して、+1して、画面の文字を書き換える」という手順を自分で書きます。宣言的なReactでは、「countという状態がある。画面にはcountを表示する」とだけ書きます。countが変われば、画面は自動でついてきます。
命令的(手作業でDOMを書き換える)
let count = 0;
button.addEventListener("click", () => {
count = count + 1;
document.querySelector("#n").textContent = count;
});宣言的(状態を書けばReactが表示を合わせる)
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
{count}
</button>
);違いに注目してください。命令的な方では「textContentを書き換える」という画面更新の手順が書かれています。宣言的な方には、その手順がありません。あるのは「countという状態」と「画面にはcountを表示する」という関係だけ。setCountで状態を変えると、Reactが「あ、countが変わったな。じゃあ画面を新しい状態に合わせよう」と自動で更新します。
再レンダリングの直感
状態が変わったときにReactが画面を作り直すことを「再レンダリング」と言います。イメージは「その状態のときの画面を、もう一度まるごと描き直す」です。ただし本当に全部を書き換えるわけではなく、Reactが賢く「前と違うところだけ」を実際の画面に反映します(この仕組みは次のレッスンで軽く触れます)。
状態を直接書き換えてはいけない
count = count + 1 のように変数を直接いじってもReactは気づきません。必ずsetCountのような更新関数を使います。「状態を変えたよ」とReactに伝えることで、初めて再レンダリングが起きます。ここは初心者がよくつまずく落とし穴です。
function Greeting() {
const [name, setName] = useState("世界");
return (
<div>
<p>こんにちは、{name}さん</p>
<button onClick={() => setName("React")}>変える</button>
</div>
);
}AIにはこう聞く
「このReactコードは宣言的ですか、命令的ですか?なぜそう言えるのか、状態と表示の関係を指摘して」と聞くと、自分の書いたコードがReactらしいかを判定してもらえます。
- 宣言的UI = 「どう変えるか」ではなく「どういう状態か」を書く
- 状態を更新関数(setCountなど)で変えると、Reactが画面を自動で合わせる
- 状態が変わって画面を作り直すことを再レンダリングと呼ぶ
- 変数を直接書き換えてもReactは気づかない — 必ず更新関数を使う
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
Reactの「宣言的UI」を正しく説明しているのはどれ?
カウンターを例に、命令的なDOM操作と、Reactの宣言的なやり方の違いを説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。