【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會員
57內容數
⛰️ 梧笙,意即「吾生」,我是一個平凡的理工宅男。 生活離不開 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
useEffect 是 React 的一個 Hook,它告訴 React 在以下情況下執行某些代碼。 透過本章的學習,你將能夠 熟練使用 useEffect() 處理 React 副作用,並掌握 最佳實務,確保 React 應用運行順暢、效能最佳!
Thumbnail
useEffect 是 React 的一個 Hook,它告訴 React 在以下情況下執行某些代碼。 透過本章的學習,你將能夠 熟練使用 useEffect() 處理 React 副作用,並掌握 最佳實務,確保 React 應用運行順暢、效能最佳!
Thumbnail
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
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
Thumbnail
React.js 是一個熱門的library,JayLin今天講解React核心概念以及利用一個小案例概括理論部分
Thumbnail
React.js 是一個熱門的library,JayLin今天講解React核心概念以及利用一個小案例概括理論部分
Thumbnail
Todo App是一個很好學習程式語言的專案開始,JayLin來帶大家手把手用TypeScript | React | TailwildCSS 來做一個小專案
Thumbnail
Todo App是一個很好學習程式語言的專案開始,JayLin來帶大家手把手用TypeScript | React | TailwildCSS 來做一個小專案
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News