- 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 APP中引入事件
- ReactJS - 状态管理
- ReactJS - 状态管理 API
- ReactJS - 无状态组件
- ReactJS - 使用 React Hooks 进行状态管理
- ReactJS - 使用 React 钩子的组件生命周期
- ReactJS - 组件的布局
- ReactJS - 分页
- ReactJS - Material 用户界面
- ReactJS - Http 客户端编程
- ReactJS - 表单编程
- ReactJS - 受控组件
- ReactJS - 不受控制的组件
- ReactJS - Formik
- ReactJS - 条件渲染
- ReactJS - 列表
- ReactJS - 键
- ReactJS - 路由
- ReactJS - 冗余
- ReactJS - 动画
- ReactJS - 引导程序
- ReactJS - 地图
- ReactJS - 表格
- ReactJS - 使用 Flux 管理状态
- ReactJS - 测试
- ReactJS - CLI 命令
- ReactJS - 构建和部署
- ReactJS - 示例
- ReactJS - 钩子简介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定义钩子
- ReactJS - 可访问性
- ReactJS - 代码拆分
- ReactJS - 上下文
- ReactJS - 错误边界
- ReactJS - 转发引用
- ReactJS - 片段
- ReactJS - 高阶组件
- ReactJS - 与其他库集成
- ReactJS - 优化性能
- ReactJS - 分析器 API
- ReactJS - 门户
- ReactJS - 没有 ES6 ECMAScript 的 React
- ReactJS - 没有 JSX 的 React
- ReactJS - 协调
- ReactJS - 引用和 DOM
- ReactJS - 渲染属性
- ReactJS - 静态类型检查
- ReactJS - 严格模式
- ReactJS - Web 组件
- ReactJS - 日期选择器
- ReactJS - Helmet
- ReactJS - 内联样式
- ReactJS - 属性类型
- ReactJS - 浏览器路由器
- ReactJS - DOM
- ReactJS - 旋转木马
- ReactJS - 图标
- ReactJS - 表单组件
- ReactJS - 参考 API
ReactJS - KeyboardEvent 处理器
在 Web 开发领域,创建动态和交互式用户界面非常重要。响应键盘事件是改善用户体验的一个过程。因此,在本教程中,我们将了解如何在 React 应用程序中处理键盘事件。
KeyboardEvent 处理程序函数
为了对按键等键盘事件做出反应,我们可以在 React 中使用事件处理程序方法。这些事件处理函数将事件对象作为参数,其中包含有关键盘事件的信息。让我们看一下这个事件对象的语法 -
<input
onKeyDown={e => console.log('on Key Down')}
onKeyUp={e => console.log('on Key Up')}
/>
参数
- e − 它是一个 React 事件对象。我们可以将此事件对象与下面提供的一些属性一起使用。
KeyboardEvent 属性
属性 | 描述 |
---|---|
altKey |
指示是否按下“Alt”键。 |
charCode |
表示键的 Unicode 字符代码。 |
code |
键盘上的实际键(例如,“KeyA”表示“A”键)。 |
ctrlKey |
指示是否按下“Ctrl”键。 |
key |
键上的标签(例如,“A”表示“A”键)。 |
keyCode |
键代码由此值表示。 |
metaKey |
表示存在“Meta”键(在 Mac 上为“Command”键)。 |
location |
指定键在键盘上的位置。 |
repeat |
指示键事件是否是键被按住的结果。 |
shiftKey |
指示是否按下“Shift”键。 |
which |
它返回一个数字,用于显示依赖于系统和实现的数字代码。这就像 keyCode 一样。 |
data |
包含有关事件的其他信息。 |
view |
提供有关生成事件的视图(窗口)的信息。 |
KeyboardEvent 处理程序的事件
因此,在 KeyboardEvent 类型中有一些可用的事件。
- onKeyDown − 此事件显示已按下某个键。
- onKeyUp − 此事件显示已释放密钥。
例子
示例 - 记录按下的键
在这个应用程序中,我们将创建一个简单的 React 应用程序,其中我们将有一个名为 User Name 的标签和一个用于输入输入文本的输入字段。因此,当用户在输入字段中输入文本时,我们将能够在控制台中看到常见的键盘事件。
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 钩子来跟踪当前按下的键。然后,我们将使用 useEffect 钩子来添加和删除 '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 钩子来管理背景颜色状态,并使用 useEffect 钩子来添加和删除“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”以观察颜色变化。每次按下回车键,颜色都会发生变化。
总结
在 React 中处理键盘事件可以增强我们 Web 应用程序的交互性和用户体验。通过使用这些事件处理函数和事件对象的属性,我们可以响应按键并创建响应式接口。