【React 學習筆記 EP.08】Event Handling 事件處理

更新 發佈閱讀 4 分鐘

什麼是事件處理?

React 透過 SyntheticEvent 系統封裝了瀏覽器的原生事件,提供跨瀏覽器一致的互動介面。它是網頁應用程式回應使用者操作(如點擊、輸入、送出表單)的核心機制。

事件處理基礎語法

  1. React 事件屬性採用駝峰式命名,例如 onClick 而非 HTML 的 onclick。
  2. 必須傳遞函式定義 func,而非函式執行結果 func(),否則會在渲染時直接觸發。
  3. 事件處理函式會接收一個 e 參數,這是 React 封裝過的物件,具備與原生 DOM 事件相同的屬性(如 e.target)。
  4. 若需傳遞額外參數,通常使用箭頭函式包裹,例如 () => handleClick(id)

常見錯誤與解決方法

1. 立即執行錯誤:寫成 onClick={handleClick()} 導致元件一渲染就執行,建議改為 onClick={handleClick}

2. 狀態更新不同步:建議在需要依賴舊值時使用 setCount(prev => prev + 1) 的函式寫法。

import { useState } from 'react'; 

export default function CounterApp() {
// 定義計數器狀態,預設值為 0
const [count, setCount] = useState(0);

// 定義基礎點擊處理函式
const handleAdd = () => {
// 使用回呼函式確保取得最新的 state 值進行更新
setCount((prev) => prev + 1);
};

// 定義帶有參數的處理函式
const handleAlert = (message) => {
// 彈出瀏覽器警告視窗顯示訊息
alert(`系統訊息: ${message}`);
};

// 定義表單提交處理函式
const handleSubmit = (e) => {
e.preventDefault(); // 阻止表單預設的頁面重整行為
console.log("表單已送出"); // 在控制台印出訊息
};

return (
<div style={{ padding: '20px' }}>
{/* 顯示當前計數值 */}
<h1>目前計數: {count}</h1>

{/* 綁定基礎點擊事件,注意這裡是傳入函式本身 */}
<button onClick={handleAdd}>增加數字</button>

{/* 綁定帶參數的事件,使用箭頭函式包裹以避免立即執行 */}
<button onClick={() => handleAlert('操作成功!')}>
顯示訊息
</button>

{/* 表單事件範例 */}
<form onSubmit={handleSubmit} style={{ marginTop: '10px' }}>
<button type="submit">送出表單</button>
</form>
</div>
);
}
留言
avatar-img
梧笙 WuSheng 的沙龍
67會員
38內容數
⛰️ 梧笙,意即「吾生」,我是一個平凡的理工宅男。 生活離不開 Code 與 Game,這裡主要紀錄與分享: 📖 學習筆記|紀錄我學習過的電腦技能與知識。 💻 科技新知|整理實用工具與科技領域的資訊。 🎮 電玩娛樂|聊聊遊戲動漫與實況直播的話題。 目前更新頻率不固定,有興趣歡迎追蹤。
2026/05/03
條件渲染是指根據程式當前的狀態 (State) 或屬性 (Props),動態決定要在網頁上顯示哪些 UI 元素,例如:切換登入與登出按鈕的顯示、在資料載入完成前顯示讀取中圖示。
2026/05/03
條件渲染是指根據程式當前的狀態 (State) 或屬性 (Props),動態決定要在網頁上顯示哪些 UI 元素,例如:切換登入與登出按鈕的顯示、在資料載入完成前顯示讀取中圖示。
2026/05/01
useState 是一個 React Hook,當開發者透過它改變資料時,React 偵測到變動便會自動重新渲染畫面,確保使用者看到最新的資訊。
2026/05/01
useState 是一個 React Hook,當開發者透過它改變資料時,React 偵測到變動便會自動重新渲染畫面,確保使用者看到最新的資訊。
2026/04/30
列表渲染是指利用 JavaScript 的陣列方法,將一組資料動態轉換為對應的 JSX 元素。用於處理重複性結構,例如:留言板、商品清單等,能大幅減少重複程式碼。
2026/04/30
列表渲染是指利用 JavaScript 的陣列方法,將一組資料動態轉換為對應的 JSX 元素。用於處理重複性結構,例如:留言板、商品清單等,能大幅減少重複程式碼。
看更多
你可能也想看
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
Todo App是一個很好學習程式語言的專案開始,JayLin來帶大家手把手用TypeScript | React | TailwildCSS 來做一個小專案
Thumbnail
Todo App是一個很好學習程式語言的專案開始,JayLin來帶大家手把手用TypeScript | React | TailwildCSS 來做一個小專案
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
React.js 是一個熱門的library,JayLin今天講解React核心概念以及利用一個小案例概括理論部分
Thumbnail
React.js 是一個熱門的library,JayLin今天講解React核心概念以及利用一個小案例概括理論部分
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
useEffect 是 React 的一個 Hook,它告訴 React 在以下情況下執行某些代碼。 透過本章的學習,你將能夠 熟練使用 useEffect() 處理 React 副作用,並掌握 最佳實務,確保 React 應用運行順暢、效能最佳!
Thumbnail
useEffect 是 React 的一個 Hook,它告訴 React 在以下情況下執行某些代碼。 透過本章的學習,你將能夠 熟練使用 useEffect() 處理 React 副作用,並掌握 最佳實務,確保 React 應用運行順暢、效能最佳!
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
動態導覽列為增加使用者經驗UX,要如何在Tailwind CSS上實現呢?這次JayLin來帶大家做一個動態導覽列(Animation Navigation)
Thumbnail
動態導覽列為增加使用者經驗UX,要如何在Tailwind CSS上實現呢?這次JayLin來帶大家做一個動態導覽列(Animation Navigation)
Thumbnail
這篇文章深入淺出地解釋 JavaScript 中表達式 (expression) 與陳述式 (statement) 的差異,並以 React 中 JSX 的應用為例,說明為何大括號 {} 內只能放入表達式。文章以類比人類語言的句子結構來幫助理解,並提供相關參考資料連結。
Thumbnail
這篇文章深入淺出地解釋 JavaScript 中表達式 (expression) 與陳述式 (statement) 的差異,並以 React 中 JSX 的應用為例,說明為何大括號 {} 內只能放入表達式。文章以類比人類語言的句子結構來幫助理解,並提供相關參考資料連結。
Thumbnail
這集跟大家初步介紹Next.js和如何安裝與設置最後製作一個作品集(Portfolio) 如果對設計有興趣的朋友們可以看以下連結文章來學習Figma設計軟件 https://vocus.cc/article/645c733dfd89780001ffe890
Thumbnail
這集跟大家初步介紹Next.js和如何安裝與設置最後製作一個作品集(Portfolio) 如果對設計有興趣的朋友們可以看以下連結文章來學習Figma設計軟件 https://vocus.cc/article/645c733dfd89780001ffe890
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News