
- 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 - 地圖
- 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 - 上下文
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - 碎片
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 最佳化效能
- ReactJS - Profiler API
- ReactJS - 埠
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - 渲染 Props
- ReactJS - 靜態型別檢查
- ReactJS - 嚴格模式
- 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 應用程式中處理鍵盤事件。
鍵盤事件處理程式函式
要對鍵盤事件(如按鍵)做出反應,我們可以在 React 中使用事件處理程式方法。這些事件處理程式函式將一個事件物件作為引數,該物件包含有關鍵盤事件的資訊。讓我們看看此事件物件的語法:
<input onKeyDown={e => console.log('on Key Down')} onKeyUp={e => console.log('on Key Up')} />
引數
e - 它是一個 React 事件物件。我們可以使用此事件物件以及下面提供的一些屬性。
KeyboardEvent 屬性
序號 | 屬性及描述 |
---|---|
1 | altKey 指示是否按下了“Alt”鍵。 |
2 | charCode 表示鍵的 Unicode 字元程式碼。 |
3 | code 鍵盤上的實際鍵(例如,'A' 鍵的 'KeyA')。 |
4 | ctrlKey 指示是否按下了“Ctrl”鍵。 |
5 | key 鍵上的標籤(例如,'A' 鍵的 'A')。 |
6 | keyCode 此值表示鍵碼。 |
7 | metaKey 指示“Meta”鍵的存在(在 Mac 上為“Command”鍵)。 |
8 | location 指定鍵盤上鍵的位置。 |
9 | repeat 指示鍵事件是否是由於按住某個鍵導致的。 |
10 | shiftKey 指示是否按下了“Shift”鍵。 |
11 | which 它返回一個數字以顯示系統和實現相關的數字程式碼。這與 keyCode 類似。 |
12 | data 包含有關事件的其他資訊。 |
13 | view 提供有關生成事件的檢視(視窗)的資訊。 |
KeyboardEvent 處理程式的事件
因此,KeyboardEvent 型別中有一些可用的事件。
onKeyDown - 此事件表明已按下某個鍵。
onKeyUp - 此事件表明已釋放某個鍵。
示例
示例 - 記錄按下的鍵
在此應用程式中,我們將建立一個簡單的 React 應用程式,其中我們將有一個名為“使用者名稱”的標籤和一個輸入欄位以鍵入輸入文字。因此,當用戶在輸入欄位中輸入文字時,我們將在控制檯中看到常見的鍵盤事件。
import React from 'react'; export default function App () { return ( <label> User Name: <input name="userName" onKeyDown={e => console.log('onKeyDown:', e.key, e.code)} onKeyUp={e => console.log('onKeyUp:', e.key, e.code)} /> </label> ); }
輸出

在上面的示例程式碼中,我們建立了一個輸入欄位並向輸入欄位添加了事件處理程式。因此,當按下任何鍵('onKeyDown')時,我們記錄與該鍵相關的鍵和程式碼。就像這樣,當釋放鍵('onKeyUp')時,我們記錄鍵和程式碼。
示例 - 按鍵檢測器
此應用程式將檢測並顯示使用者按下的鍵。它將有一個名為 KeyPressDetector 的元件,該元件使用 useState hook 來跟蹤當前按下的鍵。然後,我們將使用 useEffect hook 來新增和刪除 'keydown' 事件的全域性事件監聽器。每當按下某個鍵時,都會呼叫 handleKeyPress 函式,使用按下的鍵更新狀態。
import React, { useState, useEffect } from 'react'; const KeyPressDetector = () => { const [pressedKey, setPressedKey] = useState(null); const handleKeyPress = (event) => { setPressedKey(event.key); }; useEffect(() => { window.addEventListener('keydown', handleKeyPress); return () => { window.removeEventListener('keydown', handleKeyPress); }; }, []); return ( <div> <p>Press any key:</p> <p>Pressed Key: {pressedKey}</p> </div> ); }; export default KeyPressDetector;
輸出

因此,我們可以看到渲染的元件顯示一條訊息,提示使用者按下任意鍵並顯示當前按下的鍵。
示例 - 背景顏色更改器
在此應用程式中,我們將建立一個 BackgroundColorChanger 元件,當用戶按下“Enter”鍵時,該元件會更改 div 的背景顏色。它使用 useState hook 來管理背景顏色狀態,並使用 useEffect hook 來新增和刪除 'keydown' 事件監聽器。當按下“Enter”鍵時,handleKeyPress 函式會生成一個隨機顏色並更新背景顏色狀態。
import React, { useState, useEffect } from 'react'; const BackgroundColorChanger = () => { const [backgroundColor, setBackgroundColor] = useState('#ffffff'); const handleKeyPress = (event) => { if (event.key === 'Enter') { const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`; setBackgroundColor(randomColor); } }; useEffect(() => { window.addEventListener('keydown', handleKeyPress); return () => { window.removeEventListener('keydown', handleKeyPress); }; }, [backgroundColor]); return ( <div style={{ backgroundColor, padding: '20px' }}> <p>Press Enter to change background color</p> </div> ); }; export default BackgroundColorChanger;
輸出

在上面的應用程式中,渲染的元件顯示一條訊息,提示使用者按下“Enter”以觀察顏色變化。每次按下 Enter 鍵,顏色都會發生變化。
總結
在 React 中處理鍵盤事件可以增強我們 Web 應用程式的互動性和使用者體驗。透過使用這些事件處理程式函式和事件物件的屬性,我們可以響應按鍵並建立響應式介面。