本記事では、ReactのFragmentの使い方について解説しています。
Reactの学習におすすめ参考書
モダンJavaScriptの基本から始める React実践の教科書
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
Fragmentの使い方
Reactでは、returnでJSXを返す時に1つのまとまりで要素にまとめてあげる必要があります。もし、複数要素をreturnで返したい場合divタグをルート要素としてまとめる方法もありますが、これは意味のないタグを1つ増やしネストが1段階深くなってしまうためよろしくありません。
▼divタグをルート要素に設定したコード
import React from "react";
function App() {
return (
<div>
<p>App1</p>
<p>App2</p>
</div>
);
}
▼生成されたHTML
<body>
<div id="root">
<div> <!-- 無駄なdivタグ -->
<p>App1</p>
<p>App2</p>
</div>
</div>
</body>
このような場合にFragmentは活躍します。Fragmentは、ルート要素として設定することで複数要素をまとめることができ、且つHTMLタグも生成されません。
Fragmentの基本的な使い方は以下のとおりです。
▼Fragmentをルート要素に設定したコード
import React from "react";
function App() {
return (
<React.Fragment>
<p>App1</p>
<p>App2</p>
</React.Fragment>
);
}
▼生成されたHTML
<body>
<div id="root">
<p>App1</p>
<p>App2</p>
</div>
</body>
Fragmentは、React機能の一つなので<React.Fragment></React.Fragment>と記述します。名前付きインポートでもFragmentを使用することが可能です。
▼名前付きインポートのコード
import { Fragment } from "react";
function App() {
return (
<Fragment>
<p>App1</p>
<p>App2</p>
</Fragment>
);
}
更に、<Fragment></Fragment>の箇所を<></>に置き換えることでFragmentをimportすることなく実装することも可能です。
▼Fragment未使用のコード
import { Fragment } from "react";
function App() {
return (
<>
<p>App1</p>
<p>App2</p>
</>
);
}
▼生成されたHTML
<body>
<div id="root">
<p>App1</p>
<p>App2</p>
</div>
</body>
生成されたHTMLを確認するとFragmentを使用している状態と同じHTML構造になっていることが分かります。