コース一覧
Reactで状態・フォーム・リストを扱う
条件レンダリング(&&)

Reactで状態・フォーム・リストを扱う

useState、イベントハンドラ、制御されたinput、フォーム送信とバリデーション、mapによるリスト表示、key、条件レンダリング、空状態を扱う全25レッスンのコースです。入力・絞り込み・ダークモードへ反応する作品ギャラリーを作り、ユーザー操作で変化するUIの基本を身につけます。

1
state(useState)
01. なぜstateが必要か15分
02. useState15分
03. ボタンで更新15分
04. 複数のstate15分
05. オブジェクトのstate15分
06. 配列のstate15分
07. 再レンダリングの仕組み10分
08. つくる - ダークモード切替20分
09. 第4章クイズ15分
2
イベントとフォーム
01. イベントハンドラ15分
02. イベントオブジェクト15分
03. 制御されたinput15分
04. 複数の入力15分
05. フォーム送信15分
06. バリデーション15分
07. つくる - 問い合わせフォーム20分
08. 第5章クイズ15分
3
リストと条件レンダリング
01. mapでリスト描画15分
02. key15分
03. 条件レンダリング(&&)15分
04. 出し分け(三項)15分
05. 空状態15分
06. 絞り込みUI15分
07. つくる - ギャラリーReact版20分
08. 第6章クイズ15分

条件レンダリング(&&)

&& で出す / 出さない

出すか出さないかだけを決めたい

作品一覧に「NEW」バッジを付けたいとします。新しい作品にはバッジを出し、それ以外には何も出しません。「A か B を出す」ではなく「出すか、出さないか」の1択です。この形は && で書きます。

JavaScript (JSX)

{work.year >= 2026 && <span className="badge-new">NEW</span>}

左が真なら右の JSX が画面に出て、偽なら何も出ません。

なぜこれで消えるのか

JavaScript の && は「左が偽ならその左の値を返し、真なら右の値を返す」演算子です。第2章で確かめたとおりです。

JavaScript

true && "NEW" // "NEW" false && "NEW" // false

つまり条件が偽のとき、JSX の波かっこの中には false が入ります。React は false と null と undefined を「何も描かないもの」として扱うので、画面には何も出ません。バッジを消すために if で分岐する必要はありません。

数値の 0 に注意

&& で一番よくはまるのが、左に数値を置いたときです。

JavaScript (JSX)

{works.length && <p>作品があります</p>}

作品が0件のとき works.length は 0 です。0 は偽なので右は評価されませんが、&& が返すのは false ではなく 0 そのものです。React は数値の 0 を描いてしまうので、画面に 0 という文字がぽつんと残ります。

防ぐには、左を必ず真偽値にします。

JavaScript (JSX)

{works.length > 0 && <p>作品があります</p>}

> を使った時点で結果は true か false になり、この事故は起きません。空文字列も同じ理由で危ないので、&& の左には比較を書く習慣にしておくと安全です。

つまずきどころ

&& は式なので、JSX の波かっこの中にそのまま書けます。逆に if (...) { ... } は文なので波かっこの中には書けません。条件が複雑で && に収まらないときは、return の前で変数に JSX を入れておき、波かっこではその変数を出します。

演習

作品カードに、2026年の作品だけ NEW バッジを出します。

ヒント

JSX の波かっこの中に {条件 && <span>...</span>} と書けます

条件が偽のとき React は何も描きません。else を書く必要はありません

App.jsx
プレビュー

できているか

  • work-card が3枚並んでいる
  • badge-new に NEW と表示されている
  • 2026年の「写真ギャラリー」にバッジが出ている
  • 2025年の2件にはバッジが出ていない
エディタを読み込んでいます