カテゴリ: React 更新日: 2026/01/14

Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐

複雑な条件付きレンダリングを整理するコツ
複雑な条件付きレンダリングを整理するコツ

先生と生徒の会話形式で理解しよう

生徒

「Reactで複雑な条件付きレンダリングを書くと途中で迷子になるんです…どうやって整理したらいいですか?」

先生

「Reactでは条件が増えてくると、一気に読みづらくなるね。整理するコツを覚えると、すっきりしたコードにできるよ。」

生徒

「やっぱり整理する方法があるんですね。どんな考え方がいいんですか?」

先生

「では、初心者でも使いやすくて覚えやすい整理テクニックを順番に見ていこう!」

1. 複雑な条件は「状態の意味」を言葉にして整理しよう

1. 複雑な条件は「状態の意味」を言葉にして整理しよう
1. 複雑な条件は「状態の意味」を言葉にして整理しよう

Reactの条件付きレンダリングが複雑になる理由の多くは、「状態が何を意味しているのか」がわかりにくいまま書いてしまうことです。 例えば、非同期でデータを読み込みながら、同時にエラー処理や空データの判定を行うと、画面に表示する条件が増えて混乱しやすくなります。 初心者ほど「とりあえずif文で全部書く」という形になりがちで、気がつくと入り組んだコードができあがります。

まずは状態を「読み込み中」「成功」「空データ」「エラー」などのように言葉で分けて考え、その意味に名前をつけることで、条件分岐が頭の中で整理されます。 言葉にして整理すると、どの状態でどのUIを出すかが明確になり、コードも読みやすくなります。

2. 条件分岐を1行にまとめず、変数に切り出して整理しよう

2. 条件分岐を1行にまとめず、変数に切り出して整理しよう
2. 条件分岐を1行にまとめず、変数に切り出して整理しよう

初心者がつまずきやすいポイントの一つが、「1つのreturnの中ですべてを処理しようとする」書き方です。 条件が増えると長い式が入り混じり、どの条件がどの表示に対応しているのかが非常に読みにくくなります。 そこで、条件を変数に名前をつけて切り出す方法がとても効果的です。


import React from "react";

function UserStatus({ user, isLoading, error }) {
  const isError = Boolean(error);
  const isEmpty = !isLoading && !error && !user;
  const isSuccess = !isLoading && user;

  if (isLoading) return <p>読み込み中です…</p>;
  if (isError) return <p>エラーが発生しました</p>;
  if (isEmpty) return <p>データがありません</p>;

  return <p>{user.name}さん、こんにちは!</p>;
}

export default UserStatus;
(状態ごとに表示内容が切り替わるシンプルなUIになります)

このように、状態を名前付きの変数にすることで条件の意味が明確になり、後から読んでも直感的に理解できます。 Reactの条件付きレンダリングが難しく感じるのは、判断材料がコードに埋もれてしまうためです。 名前をつけて取り出すだけで可読性が大きく改善されます。

3. 条件の優先順位を明確にして書く

3. 条件の優先順位を明確にして書く
3. 条件の優先順位を明確にして書く

複雑な条件分岐を扱う際は、「どの状態を最優先で判定すべきか」を決めておくことが大切です。 例えば読み込み中なら他の条件より必ず先に表示すべきですし、エラーが発生したらその画面を見せるのが自然です。 このように優先順位を上から順に書くことで、流れの通りに読めるコードになります。

最優先を上、最後に通常表示を置くことで、ReactのJSXがスッキリして読みやすくなります。

4. JSXを分けて小さな部品にすると読みやすくなる

4. JSXを分けて小さな部品にすると読みやすくなる
4. JSXを分けて小さな部品にすると読みやすくなる

条件によって大きなUIが切り替わる場合は、JSXを大きな1つのreturnに詰め込まない方が見やすくなります。 表示するUIを小さなコンポーネントとして切り出すことで、Reactの構造が視覚的に整理されます。 例えばエラー時の画面や読み込み画面など、決まったパターンは部品としてまとめると再利用もできて便利です。


function LoadingView() {
  return <p>読み込み中です…</p>;
}

function ErrorView() {
  return <p>エラーが発生しました</p>;
}

function UserView({ user }) {
  return <p>{user.name}さん、ようこそ!</p>;
}

function AppUI({ user, isLoading, error }) {
  if (isLoading) return <LoadingView />;
  if (error) return <ErrorView />;
  if (!user) return <p>ユーザーが見つかりません</p>;

  return <UserView user={user} />;
}
(役割ごとに画面を分けることで、読みやすい構造になります)

コンポーネントに分けると、Reactの強みである「部品化」が生きて、複雑な状態でも整理して書くことができます。 初心者ほど1つのコンポーネントに全て書きがちですが、分割するだけで見通しが大きく改善します。

5. 条件が増え続ける場合は「状態の種類」を再設計しよう

5. 条件が増え続ける場合は「状態の種類」を再設計しよう
5. 条件が増え続ける場合は「状態の種類」を再設計しよう

どうしても条件が多すぎる場合は、そもそも状態の整理が必要なケースもあります。 例えば「読み込み中」「成功」「失敗」「未ログイン」「権限不足」「空データ」などが混ざると、状態を個別の変数で持つより「状態を一つの値で管理する」方が整理しやすくなる場合があります。

状態をひとまとめの「モード」という考え方にすると、条件が増えても混乱しにくくなります。


const STATUS = {
  LOADING: "loading",
  ERROR: "error",
  EMPTY: "empty",
  SUCCESS: "success",
};

function AppUI({ status, user }) {
  switch (status) {
    case STATUS.LOADING:
      return <p>読み込み中です…</p>;
    case STATUS.ERROR:
      return <p>エラーが発生しました</p>;
    case STATUS.EMPTY:
      return <p>データがありません</p>;
    case STATUS.SUCCESS:
      return <p>{user.name}さん、ようこそ!</p>;
    default:
      return null;
  }
}
(状態を1つの値にまとめると分岐が明確になり整理しやすくなります)

こうした「状態を一つにまとめる」考え方を取り入れると、複雑な分岐を自然に分類できて、Reactのビューがクリアになります。 条件付きレンダリングが難しいと感じたときこそ、状態そのものを見直す絶好の機会です。

カテゴリの一覧へ
新着記事
New1
React
ReactのuseEffectでメモリリークを防ぐ方法!初心者でもわかるクリーンアップ関数の使い方
New2
React
Reactのリストレンダリングとは?map関数で配列を表示する方法を初心者向けに解説
New3
React
Reactのカスタムフックでデバウンス処理を実装する方法!初心者にもわかるステップ解説
New4
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
人気記事
No.1
Java&Spring記事人気No1
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.2
Java&Spring記事人気No2
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.3
Java&Spring記事人気No3
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.4
Java&Spring記事人気No4
React
ReactのPropsにデフォルト値を設定する方法を完全ガイド!初心者でもわかる型安全なProps管理
No.5
Java&Spring記事人気No5
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.6
Java&Spring記事人気No6
React
Reactで理解するuseStateのジェネリック型入門!型安全なState管理を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
React
ReactのPropsとStateのベストプラクティスを整理しよう!初心者でもわかる使い方ガイド
No.8
Java&Spring記事人気No8
React
ReactのPropsでオブジェクト型を扱う方法を完全ガイド!初心者でもわかる型安全なProps管理