転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

Reactコンポーネントの書き方とexport方法の違い

Reactコンポーネントの書き方にはいくつかパターンがあります。
特に 関数の書き方 と export方法(default / named) の違いは、最初は分かりにくいところです。

この記事では、

  • default export(後出し)の意味と使いどころ
  • 巻き上げ(hoisting)とは何か
  • 関数の書き方+exportの違いと使い分け

をわかりやすくまとめます。


1. export の種類

default export(デフォルトエクスポート)

  • 1ファイルにつき1つだけ
  • import時に好きな名前を付けられる
export default function App() {
  return <div>App</div>
}

// import例
import MyApp from './App'

named export(名前付きエクスポート)

  • 1ファイルにいくつでも書ける
  • import時は名前を合わせる必要がある
export const Home = () => <h1>Home</h1>
export const About = () => <h1>About</h1>

// import例
import { Home, About } from './pages/Home'


2. 関数の書き方の2種類

関数宣言(function declaration)

function App() {
  return <div>App</div>
}

巻き上げ(hoisting) がされる
→ ファイル内で宣言より前に呼び出しても使える

関数式(アロー関数)

const Home = () => {
  return <div>Home</div>
}

巻き上げされない
→ 宣言より前で呼び出すとエラーになる


3. 巻き上げ(hoisting)とは?

JavaScriptでは、関数宣言や変数宣言が実行前にファイルの先頭に持ち上がったように扱われる仕組みがあります。

例(関数宣言はOK):

sayHello() // ✅ 動く

function sayHello() {
  console.log("Hello")
}

例(アロー関数はNG):

sayHello() // ❌ エラー

const sayHello = () => {
  console.log("Hello")
}


4. default export 後出し とは?

関数を先に宣言し、最後に export default する書き方です。

// 先に変数や関数などの準備
const appTitle = "My Cool App"

function App() {
  return <h1>{appTitle}</h1>
}

// 最後にdefault export
export default App

この書き方のメリット:

  • コンポーネントの前に変数や補助関数を置ける
  • 同じファイル内で複数の関数を定義し、最後に主役だけexportできる


5. まとめ

  • default export … 主役コンポーネント向き。import時に名前を自由に決められる
  • named export … 複数コンポーネントや関数をまとめて管理するのに便利
  • 関数宣言 は巻き上げされるが、アロー関数はされない
  • default export後出し は、処理や補助関数を前に書いて最後に主役だけexportしたいときに使う