React合成事件是React模擬原生DOM事件所有能力的一個事件對象,即瀏覽器原生事件的跨瀏覽器包裝器;它根據W3C規范來定義合成事件,兼容所有瀏覽器,擁有與瀏覽器原生事件相同的接口。在React中,所有事件都是合成的,不是原生DOM事件,但可以通過“e.nativeEvent”屬性獲取DOM事件。
前端(vue)入門到精通課程,老師在線輔導:聯系老師
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用
本教程操作環境:Windows7系統、react18版、Dell G3電腦。
一、合成事件是什么
React基于瀏覽器的事件機制自身實現了一套事件機制,包括事件注冊、事件的合成、事件冒泡、事件派發等
在React中這套事件機制被稱之為合成事件
合成事件(SyntheticEvent)
React 合成事件(SyntheticEvent)是 React 模擬原生 DOM 事件所有能力的一個事件對象,即瀏覽器原生事件的跨瀏覽器包裝器。它根據 W3C 規范 來定義合成事件,兼容所有瀏覽器,擁有與瀏覽器原生事件相同的接口。例如
const button = <button onClick={handleClick}>按鈕</button>
登錄后復制
在 React 中,所有事件都是合成的,不是原生 DOM 事件,但可以通過 e.nativeEvent 屬性獲取 DOM 事件。 比如:
const handleClick = (e) => console.log(e.nativeEvent);; const button = <button onClick={handleClick}>按鈕</button>
登錄后復制
從上面可以看到React事件和原生事件也非常的相似,但也有一定的區別:
-
事件名稱命名方式不同
// 原生事件綁定方式 <button onclick="handleClick()">按鈕命名</button> // React 合成事件綁定方式 const button = <button onClick={handleClick}>按鈕命名</button>
登錄后復制
-
事件處理函數書寫不同
// 原生事件 事件處理函數寫法 <button onclick="handleClick()">按鈕命名</button> // React 合成事件 事件處理函數寫法 const button = <button onClick={handleClick}>按鈕命名</button>
登錄后復制
雖然onclick看似綁定到DOM元素上,但實際并不會把事件代理函數直接綁定到真實的節點上,而是把所有的事件綁定到結構的最外層,使用一個統一的事件去監聽。【