R初めてのReact

Day 0Reactってなに? — UIを部品で組み立てる

宣言的UI — 「状態」を書けば画面はReactが合わせる

Reactの核心は「宣言的UI」。どう変えるか(手順)ではなく、どういう状態か(結果)を書くと、Reactが画面をその状態に合わせてくれる。命令的なDOM操作と比べて直感をつかむ。

「手順」ではなく「状態」を書く

Reactの一番大事な考え方が「宣言的UI」です。少し難しい言葉ですが、意味はシンプルです。「画面をどう変えるか(手順)」を書くのではなく、「今どういう状態なら、画面はこう見える」という関係だけを書きます。あとはReactが、状態に合わせて画面を自動で更新してくれます。

命令的 vs 宣言的の違い

命令的(imperative)は「料理の手順書」。手を洗って、鍋を出して、水を入れて…と1つずつ指示します。宣言的(declarative)は「完成した料理の写真」。こういう状態にしてほしい、と結果だけ伝えて、作り方はReactに任せます。

たとえばカウンター(数字が増えるボタン)を考えます。命令的なやり方では、ボタンが押されるたびに「今の数字を取り出して、+1して、画面の文字を書き換える」という手順を自分で書きます。宣言的なReactでは、「countという状態がある。画面にはcountを表示する」とだけ書きます。countが変われば、画面は自動でついてきます。

命令的(手作業でDOMを書き換える)

JAVASCRIPT
let count = 0;
button.addEventListener("click", () => {
  count = count + 1;
  document.querySelector("#n").textContent = count;
});

宣言的(状態を書けばReactが表示を合わせる)

TSX
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に伝えることで、初めて再レンダリングが起きます。ここは初心者がよくつまずく落とし穴です。

TSX
function Greeting() {
  const [name, setName] = useState("世界");
  return (
    <div>
      <p>こんにちは、{name}さん</p>
      <button onClick={() => setName("React")}>変える</button>
    </div>
  );
}
nameという状態を書くだけ。ボタンでnameを変えれば、表示は自動で追従する。

AIにはこう聞く

「このReactコードは宣言的ですか、命令的ですか?なぜそう言えるのか、状態と表示の関係を指摘して」と聞くと、自分の書いたコードがReactらしいかを判定してもらえます。

  • 宣言的UI = 「どう変えるか」ではなく「どういう状態か」を書く
  • 状態を更新関数(setCountなど)で変えると、Reactが画面を自動で合わせる
  • 状態が変わって画面を作り直すことを再レンダリングと呼ぶ
  • 変数を直接書き換えてもReactは気づかない — 必ず更新関数を使う

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

Reactの「宣言的UI」を正しく説明しているのはどれ?

Q2

カウンターを例に、命令的なDOM操作と、Reactの宣言的なやり方の違いを説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。