React合成事件和jsDOM事件的區別

2021-09-28 23:28:03 字數 909 閱讀 8589

js事件:

①小寫命名

啟用按鈕
②阻止預設事件點我

react合成事件

事件駝峰命名

啟用按鈕
②阻止預設事件( e.preventdefault()?

function actionlink() 

return (

點我);

}

react事件 是乙個合成事件。使用 react 的時候通常你不需要使用 addeventlistener 為乙個已建立的 dom 元素新增***。你僅僅需要在這個元素初始渲染的時候提供乙個***。

在 react 底層,主要對合成事件做了兩件事:事件委派和自動繫結。

事件委派

在使用 react 事件前,一定要熟悉它的事件**機制。它並不會把事件處理函式直接繫結到 真實的節點上,而是把所有事件繫結到結構的最外層,使用乙個統一的事件***,這個事件監 聽器上維持了乙個對映來儲存所有元件內部的事件監聽和處理函式。當元件掛載或解除安裝時,只是 在這個統一的事件***上插入或刪除一些物件;當事件發生時,首先被這個統一的事件*** 處理,然後在對映裡找到真正的事件處理函式並呼叫。這樣做簡化了事件處理和**機制,效率 也有很大提公升。

自動繫結

在 react 元件中,每個方法的上下文都會指向該元件的例項,即自動繫結 this 為當前元件。 而且 react 還會對這種引用進行快取,以達到 cpu 和記憶體的最優化。在使用 es6 classes 或者純 函式時,這種自動繫結就不復存在了,我們需要手動實現 this 的繫結。

jq的合成事件

jq中有兩個合成事件 hover 和toggle 1.hover hover方法用於模擬游標懸停事件。當游標移動到元素上時,會觸發指定的第乙個函式 enter 當游標移出這個元素時,會觸發指定的第二個函式 le e 是mouseenter和mousele e的合成 2.toggle toggle 方...

React原始碼剖析 手寫React合成事件機制

之前剖析過vue中的ast的實現和dom diff的實現。這裡來到react,說說react的事件機制 這裡通過原始碼抽離react事件處理核心,手寫react事件處理方法 不和原始碼完全一樣,當基本思路及實現流程相同 上 定義addevent方法為dom物件新增事件 引數1 需要繫結事件的dom節...

react合成事件的三種繫結方式bind

在使用es6 classes或者純函式時,不存在自動繫結,需要我們手動實現this的繫結。一 bind方法。這個方法可以繫結事件處理器內的this,並可以向事件處理器中傳遞引數,例 handleclick e,arg render 若不傳參即可寫為this.handleclick.bind this...