Sitemap
綠色恐龍巴巴凹

綠色恐龍巴巴凹

React Hook vs Hook

1 min readMay 8, 2025

原本我在 murmur

Get 綠色恐龍巴巴凹’s stories in your inbox

Join Medium for free to get updates from this writer.

UI 框架中的生命週期 hook(如 React 的 useEffect)

這個其實一直都是我很不懂的點,明明就是編程,你就是執行一個 function 為什麼叫做 hook
因為事實上我的理解,react 的 hook
的重點應該是強調,原本的元件去除狀態
把生命週期函式化,所以 function 在狀態 基於某個生命週期的點,用 react hook function 去觸發掛載的程式,所以叫做 hook

而不是因為,這整趟,程式邏輯,業務邏輯發動了 hook
這邊在觀念上是不是混用了
你可以幫我分開嗎

GPT:

<h2>🔍 一、傳統「hook」的本質是什麼?</h2>
<p><strong>傳統的 hook 是「可被註冊的事件切入點」。</strong></p>
<ul>
<li>系統在某個時機(例如某事件、生命週期階段)主動「回呼你寫的程式」。</li>
<li>你只是「掛上去」,不是主動呼叫。</li>
</ul>
<p>🔁 這是 <strong>事件驅動(event-driven)</strong> 程式設計常見的模式。</p>

<h2>⚛️ 二、React 的 hook 是什麼?為什麼叫「hook」?</h2>
<p>React Hook(像 <code>useEffect</code>、<code>useState</code>)的命名,其實<strong>是借用了「hook」這個詞的語感</strong>,但技術上它<strong>不是傳統的 callback-style hook</strong>。</p>
<p>你說的沒錯,它的真正意義是:</p>
<blockquote>
<strong>把原本 class component 的生命週期(例如 componentDidMount)與狀態(this.state)「函式化」,並透過「呼叫一個 hook function」來「掛載狀態與邏輯」。</strong>
</blockquote>

<p>也就是說:</p>
<table border="1" cellpadding="6" cellspacing="0">
<thead>
<tr>
<th>React Hook 實作</th>
<th>行為</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>useState</code></td>
<td>掛一個狀態(state)到函式元件中</td>
</tr>
<tr>
<td><code>useEffect</code></td>
<td>掛一段副作用邏輯到元件的「渲染副作用階段」</td>
</tr>
</tbody>
</table>

<p>這些都不是 <strong>「事件觸發→你註冊 callback」</strong> 的傳統 hook 模式,而是:</p>
<blockquote>
在「特定呼叫順序與規則中」<strong>你呼叫 React 提供的 hook 函式,讓 React 記住副作用/狀態。</strong>
</blockquote>

<h2>🤔 為什麼還是叫做 Hook?</h2>
<p>React 團隊取這個名字,其實是因為這些函式「<strong>讓你可以把某些邏輯</strong>(例如狀態、副作用)<strong>『掛』進 React 的生命週期流程裡」</strong>,你不用寫 class,也可以參與整個元件生命週期。</p>
<p>這種「掛進某個流程」的語感,跟「hook」很像,於是就用這個詞。</p>
<p>但:</p>
<blockquote>
🧠 <strong>React hook 是「掛入 React 執行流程」的 API,不是典型的 callback hook。</strong>
</blockquote>

<h2>✅ 總結:React hook 與傳統 hook 的比較</h2>
<table border="1" cellpadding="6" cellspacing="0">
<thead>
<tr>
<th>特性</th>
<th>傳統 Hook</th>
<th>React Hook</th>
</tr>
</thead>
<tbody>
<tr>
<td>誰觸發誰</td>
<td>系統觸發你寫的程式</td>
<td>你主動呼叫 React 提供的函式</td>
</tr>
<tr>
<td>型態</td>
<td>callback / observer</td>
<td>具狀態管理語意的函式</td>
</tr>
<tr>
<td>本質</td>
<td>掛上事件點、等系統觸發</td>
<td>掛上狀態與副作用到元件渲染邏輯</td>
</tr>
<tr>
<td>命名由來</td>
<td>技術結構與事件驅動</td>
<td>概念上「將邏輯掛入 React 元件流程」</td>
</tr>
</tbody>
</table>

<p>所以你說的很對 —— React hook 的重點是「<strong>函式化元件邏輯與生命週期狀態</strong>」,而不是事件導向的「系統主動觸發你寫的東西」,但它借用了「hook」這個語感,來強調「<strong>把某段邏輯掛進生命週期流程中</strong>」。</p>

--

--