こんにちは。Reactの世界へようこそ。
フロントエンドの荒波を渡り歩いてきた身として、今日はお話ししたいことがあります。
Reactを学び始めると、誰もが一度は「あれ、なんでわざわざ`
—
「とりあえずdiv」という名の積み木崩し
Reactのコンポーネントは、基本的に「一つの親要素」で全体を包まなければならないというルールがあります。
例えば、プロフィールカードを作るとしましょう。名前と肩書きを並べたいとき、こんな風に書きたくなりますよね。
// ❌ ダメな例:親要素がないのでReactが怒ります
function Profile() {
return (
田中太郎
フロントエンドエンジニア
);
}
Reactは「兄弟要素が並んでいると、どこを起点にすればいいかわからないよ!」とパニックを起こします。だから初心者の頃は、反射的にこうやって書くはずです。
// ⭕️ よくある解決策:とりあえずdivで囲む
function Profile() {
return (
田中太郎
フロントエンドエンジニア
);
}
これで動きます。でも、ちょっと想像してみてください。もしこれがリストの一部だったり、複雑なレイアウトの一部だったりしたら、ページ中が`
それはまるで、「お土産を買っただけなのに、持ち帰るために過剰な大きさの段ボール箱に詰め込まれている」ような状態です。HTMLの構造が不必要に深くなり、CSSのレイアウト崩れの原因になったり、ブラウザの表示パフォーマンスを地味に削ったりします。
—
救世主「Fragment」の登場
ここで登場するのがFragmentです。
Fragmentは、いわば「透明な梱包材」です。中身を一つにまとめる役割は果たすけれど、実際にブラウザに表示されるときには、その存在は跡形もなく消えてなくなります。
書き方はとても簡単です。`
// ✅ これが理想の書き方!
function Profile() {
return (
// この<>は、ブラウザのHTMLには一切出力されません!
<>
田中太郎
フロントエンドエンジニア
>
);
}
どうですか? 魔法みたいでしょう?
ブラウザの検証ツール(デベロッパーツール)で見てみてください。`
`と`
`だけがスッキリと並んでいるはずです。これこそが、洗練されたフロントエンドの第一歩です。
—
現場の知恵:Fragmentを使うべきタイミング
「じゃあ、全部これに変えちゃえばいいの?」と思うかもしれませんが、少しだけ注意点があります。
- 基本は `<>` を使う:
シンプルで読みやすいので、基本はこれでOKです。
- 例外は `key` が必要なとき:
リストをレンダリングする際など、ループの中で要素に`key`を渡したいときは、省略形の `<>` は使えません。その場合は、ちゃんと `
実践的な例:リスト表示のとき
function UserList({ users }) {
return (
-
{users.map(user => (
- {user.name}
- {user.role}
// key属性が必要なときは、明示的にFragmentタグを使います
))}
);
}
—
最後に:なぜ「無駄」を嫌うのか
「たかが`
不要なDOMを削ることは、単なる節約ではありません。ブラウザが画面を描画するコストを減らし、CSSの指定をシンプルにし、何よりコードを見た人が「ああ、ここは階層構造に意味はないんだな」と瞬時に理解できるための「意思表示」なんです。
プログラミングは、書いたコードが動くのは当たり前。そこから一歩進んで、誰が見ても美しい構造を目指すこと。それが、良いエンジニアへの近道です。
Fragmentという魔法、ぜひ今日のコーディングから使ってみてください。もしつまずいても大丈夫、最初は誰だって回り道をします。その一歩一歩が、あなたを確かな力へと導いてくれますよ。
それでは、良いReactライフを!

コメント