Reactのリストとキーを完全理解!フィルタリングした配列をリスト表示する方法
生徒
「Reactでリストを表示することはできるようになったんですが、条件で絞り込むこともできますか?」
先生
「できます。配列をフィルタリングしてから表示する方法があります」
生徒
「フィルタリングって難しそうな言葉ですね…」
先生
「大丈夫です。不要なものを取り除く、という意味で考えると分かりやすいですよ」
1. 配列とリスト表示の基本をおさらい
Reactでリストを表示するときは、 配列というデータのまとまりを使います。
配列とは、 同じ種類の情報を順番に並べた箱のようなものです。 買い物リストや、 名前の一覧を思い浮かべると理解しやすいです。
Reactでは、 この配列の中身を画面に並べることで、 リスト表示を実現しています。
2. フィルタリングとは何か
フィルタリングとは、 条件に合うものだけを残す操作のことです。
例えば、 たくさんある果物の中から、 りんごだけを選び出すようなイメージです。
プログラムでは、 配列の中身を確認して、 必要なものだけを新しい配列として取り出します。
3. filterの考え方をやさしく理解
filterは、 配列から条件に合う要素だけを集める仕組みです。
難しい言葉に聞こえますが、 「これは残す」「これは除く」と 一つずつ確認していくだけです。
Reactでは、 filterとリスト表示を組み合わせることで、 動的に表示内容を変えられます。
4. フィルタリングしてリスト表示する基本例
function App() {
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(number => number % 2 === 0);
return (
<ul>
{evenNumbers.map(number => (
<li key={number}>{number}</li>
))}
</ul>
);
}
この例では、 数字の中から偶数だけを選び、 それをリストとして表示しています。
5. 文字列を条件で絞り込む例
数字だけでなく、 文字の配列もフィルタリングできます。
例えば、 名前の中から特定の文字を含むものだけを 表示することも可能です。
function App() {
const names = ["たろう", "はなこ", "じろう", "さくら"];
const filteredNames = names.filter(name => name.includes("ろう"));
return (
<ul>
{filteredNames.map(name => (
<li key={name}>{name}</li>
))}
</ul>
);
}
6. 入力内容でリストを絞り込む考え方
実際の画面では、 ユーザーの入力に応じて 表示を変えることがよくあります。
入力された文字を条件として、 配列をフィルタリングすると、 検索のような動きになります。
import React, { useState } from "react";
function App() {
const [keyword, setKeyword] = useState("");
const items = ["りんご", "みかん", "ばなな", "ぶどう"];
const filteredItems = items.filter(item =>
item.includes(keyword)
);
return (
<div>
<input
value={keyword}
onChange={e => setKeyword(e.target.value)}
/>
<ul>
{filteredItems.map(item => (
<li key={item}>{item}</li>
))}
</ul>
</div>
);
}
export default App;
7. フィルタリングとkeyの関係
フィルタリングして表示する場合でも、 keyは必ず必要です。
keyは、 Reactがどの行を表示しているかを 正しく判断するための目印です。
フィルタリングで表示数が変わっても、 keyが安定していれば、 表示が崩れることはありません。
8. 初心者がつまずきやすいポイント
よくある間違いは、 filterの結果を使わずに、 元の配列をそのまま表示してしまうことです。
必ず、 フィルタリングした新しい配列を リスト表示に使うようにしましょう。
処理の流れを 頭の中で順番に追うことが大切です。
9. フィルタリングはリスト表示の応用
フィルタリングは、 リスト表示の応用ですが、 特別に難しいものではありません。
「必要なものだけを選ぶ」 という考え方を身につけると、 Reactの画面作りが ぐっと分かりやすくなります。