react事件和原生事件的區別是:react中的事件是綁定到document上面;而原生的事件是綁定到dom上面。相對綁定的地方來說,dom上的事件要優先於document上的事件執行,react的事件物件是合成對象,不是原生的。
本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
react事件和原生事件有什麼區別
react中的事件是綁定到document上面的,#
##而原生的事件是綁定到dom上面的, 因此相對綁定的地方來說,dom上的事件要優先於document上的事件執行什麼是事件?
首先說JS就是為了實現一些動態的操作,而用戶會有時候想去實現一些功能,如提交表單,滑鼠點擊等,就要在瀏覽器中觸發這個事件,然後瀏覽器會感知(或說捕獲)到使用者的這個行為,就會去回應處理這個事件。這個就稱為事件。什麼是事件物件?
系統在呼叫處理程序時,把事件會發生的一切訊息,都封裝成一個對象,然後作為一個參數傳遞給事件處理程序,而這個物件就是事件物件。在原生的函式中,常常會看見一個event的東西,而這個東西就是我們說的事件物件。react在事件處理上具有以下優點:
- #幾乎所有的事件都代理(delegate)到document,達到效能最佳化的目的
- 對於每種類型的事件,統一使用擁分發函數(dispatchEven)分發事件
- 事件物件(event)是合成物件( syntheticEvent),不是原生的
React合成事件
為什麼會抽象化為合成事件?
如果把所有的事件處理函數都綁定在DOM上,那麼在頁面回應的時候就會收到影響,導致頁面很慢。 react為了避免這類DOM事件的濫用,同時屏蔽底層之間不同瀏覽器事件的系統差異,實現了一個中間層- syntheticEvent原理
在react中,如果需要綁定事件,通常都會在JSX中這麼寫:<div onClick={this.onClick}>我是react点击事件</div>但是在react中,並不是把該click事件真實的綁定在div的DOM上,而是綁定在了DOCUMENT上,當事件發生並且通過冒泡的方式冒泡至document時,react才會將事件的內容交給相對應的函數去處理
如何在react中使用原生事件
雖然react幾乎封裝了所有的原生事件,但諸如:Modal開啟以後,點擊其他空白區域需要關閉Modal引入一些以原生事件實作的第三方函式庫,且彼此之間需要有互動等等場景時,不得不使用原生事件來進行業務邏輯處理。 由於原生事件需要綁定在真實的DOM上,所以一般在compoentdidmout/ref函數執行階段進行綁定。class Demo extends Domponent { componentDidMount () { const parentDom = ReactDom.findDOMNode(this) const childDom = parentDom.queneSelector('.button'); childDom.addEventListen('click',this.onDomClick, false) } onDOMClick = (e) => { } render () { return <div>demo</div> } }
原生事件和合成事件的混合使用
如果在業務場景中,需要混合使用原生事件和合成事件,那麼在使用的過程中,需要注意以下幾點:回應的順序class Demo extends Domponent { componentDidMount () { const parentDom = ReactDom.findDOMNode(this) const childDom = parentDom.queneSelector('.button'); childDom.addEventListen('click',this.onDomClick, false) } onDOMClick = (e) => { console.log('dom event!') } onReactClick = (e) => { console.log('react event!') } render () { return <div onClick={this.onReactClick}>demo</div> } }結果輸出:
dom event! react event!原因分析:首先我們知道原生事件是綁定在DOM上面的,而合成事件是綁定在document上面的,因此DOM上面的事件先被冒泡,則先執行,然後再冒泡到document,合成事件才被執行推薦學習:《
react視頻教程》
以上是react事件和原生事件有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

HTML與React可以通過JSX無縫整合,構建高效的用戶界面。 1)使用JSX嵌入HTML元素,2)利用虛擬DOM優化渲染性能,3)通過組件化管理和渲染HTML結構。這種整合方式不僅直觀,還能提升應用性能。

React通過state和props高效渲染數據,並通過合成事件系統處理用戶事件。 1)使用useState管理狀態,如計數器示例。 2)事件處理通過在JSX中添加函數實現,如按鈕點擊。 3)渲染列表需使用key屬性,如TodoList組件。 4)表單處理需使用useState和e.preventDefault(),如Form組件。

React通過HTTP請求與服務器交互,實現數據的獲取、發送、更新和刪除。 1)用戶操作觸發事件,2)發起HTTP請求,3)處理服務器響應,4)更新組件狀態並重新渲染。

React是一種用於構建用戶界面的JavaScript庫,通過組件化開發和虛擬DOM提高效率。 1.組件與JSX:使用JSX語法定義組件,增強代碼直觀性和質量。 2.虛擬DOM與渲染:通過虛擬DOM和diff算法優化渲染性能。 3.狀態管理與Hooks:Hooks如useState和useEffect簡化狀態管理和副作用處理。 4.使用示例:從基本表單到高級的全局狀態管理,使用ContextAPI。 5.常見錯誤與調試:避免狀態管理不當和組件更新問題,使用ReactDevTools調試。 6.性能優化與最佳

reactisafrontendlibrary,focusedonBuildingUserInterfaces.itmanagesuistateandupdatesefficefited avelyuseVirusity diftualdom,and internactSwithBackendServIcesViaApisforDatahandling,butdoesnotprocessorcorsorsorstoredordordordoredairself。

React可以嵌入到HTML中來增強或完全重寫傳統的HTML頁面。 1)使用React的基本步驟包括在HTML中添加一個根div,並通過ReactDOM.render()渲染React組件。 2)更高級的應用包括使用useState管理狀態和實現複雜的UI交互,如計數器和待辦事項列表。 3)優化和最佳實踐包括代碼分割、惰性加載和使用React.memo和useMemo來提高性能。通過這些方法,開發者可以利用React的強大功能來構建動態和響應迅速的用戶界面。

React是構建現代前端應用的JavaScript庫。 1.它採用組件化和虛擬DOM優化性能。 2.組件使用JSX定義,狀態和屬性管理數據。 3.Hooks簡化生命週期管理。 4.使用ContextAPI管理全局狀態。 5.常見錯誤需調試狀態更新和生命週期。 6.優化技巧包括Memoization、代碼拆分和虛擬滾動。

React的未來將專注於組件化開發的極致、性能優化和與其他技術棧的深度集成。 1)React將進一步簡化組件的創建和管理,推動組件化開發的極致。 2)性能優化將成為重點,特別是在大型應用中的表現。 3)React將與GraphQL和TypeScript等技術深度集成,提升開發體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。