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 - Hooks 进行状态管理 ReactJS - Hooks 的组件生命周期 ReactJS - 布局组件 ReactJS - 分页 ReactJS - Material UI ReactJS - Http 客户端编程 ReactJS - 表单编程 ReactJS - 受控组件 ReactJS - 非受控组件 ReactJS - Formik ReactJS - 条件渲染 ReactJS - 列表 ReactJS - Key 键 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 - 上下文 ReactJS - 错误边界 ReactJS - 转发 Refs ReactJS - 片段 ReactJS - 高阶组件 ReactJS - 与其他库集成 ReactJS - 优化性能 ReactJS - Profiler API ReactJS - Portals ReactJS - 不使用 ES6 ECMAScript ReactJS - 不使用 JSX 的 React ReactJS - Reconciliation ReactJS - Refs 和 DOM ReactJS - 渲染道具 ReactJS - 静态类型检查 ReactJS - 严格模式 ReactJS - Web 组件

其他概念

ReactJS - 日期选择器 ReactJS - Helmet ReactJS - 内联样式 ReactJS - PropTypes ReactJS - BrowserRouter ReactJS - DOM ReactJS - 轮播 ReactJS - 图标 ReactJS - 表单组件 ReactJS - 参考 API

ReactJS 有用资源

ReactJS - 快速指南 ReactJS - 备忘录 Axios - 备忘录 ReactJS - 有用资源 ReactJS - 讨论


ReactJS - MouseEvent 处理程序

鼠标事件是 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 相关的属性 −

Sr.No 属性 &描述
1 altKey

如果在触发鼠标事件时按下了"Alt"键,则返回 true。

2 button

表示在鼠标事件期间按下的按钮编号(如果适用)。

3 buttons

表示在发生鼠标事件时按下的按钮。

4 clientX 和 clientY

提供鼠标指针在元素。

5 ctrlKey

如果在鼠标事件期间按下了"Ctrl"键,则返回 true。

6 metaKey

指示在鼠标事件发生时是否按下了"Meta"键。

7 movementX 和 movementY

显示自上次 mousemove 事件以来鼠标指针的 X 和 Y 坐标的变化。

8 pageX 和 pageY

给出鼠标指针相对于整个文档。

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;
}

输出

cards

当上述示例中的卡片上触发不同的鼠标事件(例如 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>
   );
}

输出

bg color app

示例 − 交互式按钮应用

这是另一个使用 <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>
   );
}

输出

click and hover

总结

因此,了解鼠标事件和相关属性对于使用 React 开发动态 Web 应用非常重要。我们可以使用这些事件设计出响应用户交互的有吸引力的用户体验。React 为我们提供了创建悬停效果、处理按钮点击和监控鼠标移动所需的功能。

reactjs_reference_api.html