
- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 功能
- ReactJS - 優點與缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 進行元件生命週期管理
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - Map
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - Context
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - 片段
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 最佳化效能
- ReactJS - Profiler API
- ReactJS - Portals
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 協調
- ReactJS - Refs 和 DOM
- ReactJS - Render Props
- ReactJS - 靜態型別檢查
- ReactJS - Strict Mode
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 走馬燈
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 滑鼠事件處理程式
滑鼠事件是 Web 開發的一個重要方面,尤其是在 React 中。它們允許我們構建對使用者輸入做出響應的動態 Web 應用。我們將在下一節中介紹一些滑鼠事件及其功能。然後,我們將建立一個基本的 React 應用,當發生某些滑鼠事件時,該應用會將訊息記錄到控制檯,以演示這些概念。
React MouseEvent
在 HTML 元素上,我們可以在 React 中處理諸如 onClick、onMouseEnter、onMouseLeave、onMouseDown、onMouseUp 和 onMouseOver 之類的滑鼠事件。當用戶使用滑鼠與元件互動時,會發生多個事件。讓我們在 React 應用的上下文中看看它們。
語法
滑鼠事件事件處理程式示例。
<div onClick={e => console.log('This is onClick')} onMouseDown={e => console.log('This is onMouseDown')} onMouseUp={e => console.log('This is onMouseUp')} onMouseLeave={e => console.log('This is onMouseLeave')} onMouseEnter={e => console.log('This is onMouseEnter')} onMouseOver={e => console.log('This is onMouseOver')} />
引數
e − 這是一個 React 事件物件。我們可以將此物件與各種 MouseEvent 屬性一起使用。
MouseEvent 屬性
讓我們快速瀏覽一下與 MouseEvent 相關的屬性 −
序號 | 屬性及說明 |
---|---|
1 | altKey 如果在觸發滑鼠事件時按下“Alt”鍵,則返回 true。 |
2 | button 指示在滑鼠事件期間按下的按鈕編號(如果適用)。 |
3 | buttons 表示滑鼠事件發生時按下的按鈕。 |
4 | clientX 和 clientY 提供滑鼠指標在元素內的 X 和 Y 座標。 |
5 | ctrlKey 如果在滑鼠事件期間按下“Ctrl”鍵,則返回 true。 |
6 | metaKey 指示滑鼠事件發生時是否按下“Meta”鍵。 |
7 | movementX 和 movementY 顯示自上次 mousemove 事件以來滑鼠指標的 X 和 Y 座標的變化。 |
8 | pageX 和 pageY 給出相對於整個文件的滑鼠指標的 X 和 Y 座標。 |
9 | relatedTarget 表示事件的次要目標(如果存在)。 |
10 | screenX 和 screenY 提供全域性(螢幕)座標中滑鼠指標的 X 和 Y 座標。 |
11 | shiftKey 如果在滑鼠事件發生時按下“Shift”鍵,則返回 true。 |
這些屬性允許我們訪問和控制滑鼠事件資訊,這對於在 React 中建立動態且響應迅速的使用者介面非常重要。
示例
示例 − 簡單卡片記錄器
讓我們建立一個應用,當用戶與一組卡片互動時,該應用會響應滑鼠事件。當滑鼠懸停在這些卡片上時,它們的事件將發生變化,並在控制檯中顯示訊息。程式碼如下 −
App.js
import React, { useState } from "react"; import "./App.css"; export default function App () { return ( <div> <div className="card" onMouseEnter={e => console.log('Card 1 onMouseEnter')} onMouseOver={e => console.log('Card 1 onMouseOver')} onMouseDown={e => console.log('Card 1 onMouseDown')} onMouseUp={e => console.log('Card 1 onMouseUp')} onMouseLeave={e => console.log('Card 1 onMouseLeave')} > Card 1 </div> <div className="card" onMouseEnter={e => console.log('Card 2 onMouseEnter')} onMouseOver={e => console.log('Card 2 onMouseOver')} onMouseDown={e => console.log('Card 2 onMouseDown')} onMouseUp={e => console.log('Card 2 onMouseUp')} onMouseLeave={e => console.log('Card 2 onMouseLeave')} > Card 2 </div> </div> ); }
App.css
.App { font-family: sans-serif; text-align: center; } .loader { display: flex; justify-content: center; align-items: center; height: 100vh; /* Centers the loader vertically */ } .card { background-color: skyblue; padding-left: 120px; margin-bottom: 20px; width: 200px; height: 40px; }
輸出

當不同的滑鼠事件(例如 onMouseEnter、onMouseOver、onMouseDown、onMouseUp 和 onMouseLeave)觸發上述示例中的卡片時,App 元件會向控制檯傳送訊息。這些事件用於跟蹤和響應使用者與卡片的互動,例如滑鼠指標進入、懸停、點選或離開卡片。
示例 − 點選切換背景顏色
此應用將具有一個具有可點選區域的 <div> 元素。當我們點選 <div> 時,它將在兩種背景顏色之間切換:淺綠色和淺珊瑚色。該應用使用狀態來跟蹤點選狀態,並在切換背景顏色時將訊息記錄到控制檯。游標設定為指標以指示 <div> 可點選。
App.js
import React, { useState } from "react"; export default function App() { const [isClicked, setClicked] = useState(false); const handleClick = () => { setClicked(!isClicked); console.log('Background Toggled'); }; return ( <div onClick={handleClick} style={{ width: "200px", height: "100px", backgroundColor: isClicked ? "lightcoral" : "lightgreen", textAlign: "center", paddingTop: "25px", // lineHeight: "100px", cursor: "pointer", }} > Change Background Color App </div> ); }
輸出

示例 − 互動式按鈕應用
這是另一個使用 <div> 元素和各種 MouseEvent 處理程式的 React 應用。因此,我們將建立一個互動式按鈕狀 <div> 元素。當發生各種滑鼠事件(如單擊、滑鼠按下、滑鼠抬起、滑鼠離開、滑鼠進入和滑鼠懸停)時,它將向控制檯記錄訊息。div 將具有淺藍色背景,並且游標將更改為指標以指示其互動性。
App.js
import React from "react"; export default function App() { return ( <div onClick={(e) => console.log('This is onClick')} onMouseDown={(e) => console.log('This is onMouseDown')} onMouseUp={(e) => console.log('This is onMouseUp')} onMouseLeave={(e) => console.log('This is onMouseLeave')} onMouseEnter={(e) => console.log('This is onMouseEnter')} onMouseOver={(e) => console.log('This is onMouseOver')} style={{ width: "250px", height: "50px", backgroundColor: "lightblue", textAlign: "center", lineHeight: "50px", marginTop: "25px", cursor: "pointer", }} > Click and Hover Here </div> ); }
輸出

總結
因此,瞭解滑鼠事件和相關屬性對於使用 React 開發動態 Web 應用非常重要。透過使用這些事件,我們可以設計出對使用者互動做出響應的有吸引力的使用者體驗。React 為我們提供了建立懸停效果、處理按鈕點選和監視滑鼠移動所需的功能。