投稿

[今さら始める React マスター #6] 条件付きレンダリングとリスト表示

Reactで条件に応じて表示を切り替える方法と、配列をmapでリスト表示する基本を説明します。

[今さら始める React マスター #6] 条件付きレンダリングとリスト表示

条件付きレンダリングとは?

条件付きレンダリングは、状態や条件に応じて表示する内容を変えることです。

ログイン済みならユーザー名を表示し、未ログインならログインボタンを表示する、といった場面で使います。

if文で分ける

1
2
3
4
5
6
7
function Greeting({ isLoggedIn }) {
  if (isLoggedIn) {
    return <p>Welcome back!</p>;
  }

  return <p>Please log in.</p>;
}

分岐が大きい場合は、普通の if 文が読みやすいです。

三項演算子

短い分岐なら三項演算子も使えます。

1
{isLoggedIn ? <p>Welcome</p> : <p>Login required</p>}

&&で表示する

条件が真のときだけ表示したい場合は && が便利です。

1
{hasError && <p className="error">エラーがあります</p>}

リスト表示

配列を画面に表示するときは map() を使います。

1
2
3
4
5
6
7
8
9
10
11
const todos = ["Learn React", "Build App", "Deploy"];

function TodoList() {
  return (
    <ul>
      {todos.map((todo) => (
        <li key={todo}>{todo}</li>
      ))}
    </ul>
  );
}

Greeting と TodoList はコンポーネントの定義として置き、Appから表示します。三項演算子や && の短い断片は、コンポーネントが返すJSXの中に書く例です。Greeting の isLoggedIn を切り替えて表示を比べ、次に TodoList で三つのTodoが並ぶか確認すると、それぞれの役割を追いやすくなります。

keyの役割

リストを表示するとき、Reactは各要素を区別するために key を使います。安定したIDがある場合は、それを使うのが理想です。

1
2
3
{users.map((user) => (
  <li key={user.id}>{user.name}</li>
))}

最後の users の例は、id と name を持つ配列を別途用意している想定です。上の文字列のTodo配列とはデータの形が違う点に注意してください。

学習のポイント

条件付きレンダリングとリスト表示を使えるようになると、Reactで動的な画面を作れるようになります。Todoリストや検索結果一覧のような小さなUIで練習してみましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。