- 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 - 键
- 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 支持 Web 应用中所有可用的事件。React 事件处理与 DOM 事件非常相似,只是有一些细微的差别。例如,点击组件是可以在基于 React 的网站上观察到的常见事件之一。
React 中的事件感知组件不过是一个在其内部包含事件处理程序方法的组件。该组件可以是类组件或函数组件。在本章中,我们将学习如何使用 React 创建此类事件感知组件。
如何创建事件感知组件?
以下是创建新的事件感知组件的步骤:
让我们创建一个新的组件,MessageWithEvent,并在组件中处理事件,以便更好地理解 React 应用中的事件管理。
步骤 1 - 在您喜欢的编辑器中打开 expense-manager 应用。
接下来,在 src/components 文件夹中创建一个文件,MessageWithEvent.js,以创建 MessageWithEvent 组件。
导入 React 库。
import React from 'react';
步骤 2 - 创建一个类,MessageWithEvent,并使用 props 调用构造函数。
class MessageWithEvent extends React.Component { constructor(props) { super(props); } }
步骤 3 - 创建一个事件处理程序方法,logEventToConsole,它将事件详细信息记录到控制台。
logEventToConsole(e) { console.log(e.target.innerHTML); }
步骤 4 - 创建一个 render 函数。
render() { }
在 render() 函数中,创建一个问候消息并返回它。
render() { return ( <div> <p>Hello {this.props.name}!</p> </div> ); }
步骤 5 - 然后,将 logEventToConsole 方法设置为根容器(div) 的点击事件的事件处理程序。
render() { return ( <div onClick={this.logEventToConsole}> <p>Hello {this.props.name}!</p> </div> ); }
步骤 6 - 通过绑定事件处理程序更新构造函数。
class MessageWithEvent extends React.Component { constructor(props) { super(props); this.logEventToConsole = this.logEventToConsole.bind(); } }
最后,导出组件。
export default MessageWithEvent;
下面给出 MessageWithEvent 组件的完整代码:
import React from 'react'; class MessageWithEvent extends React.Component { constructor(props) { super(props); this.logEventToConsole = this.logEventToConsole.bind(); } logEventToConsole(e) { console.log(e.target.innerHTML); } render() { return ( <div onClick={this.logEventToConsole}> <p>Hello {this.props.name}!</p> </div> ); } } export default MessageWithEvent;
index.js
接下来,打开 index.js 并导入 MessageWithEvent。
import MessageWithEvent from './components/MessageWithEvent'
使用 MessageWithEvent 组件构建应用的用户界面。
import React from 'react'; import ReactDOM from 'react-dom'; import MessageWithEvent from './components/MessageWithEvent' ReactDOM.render( <React.StrictMode> <div> <MessageWithEvent name="React" /> <MessageWithEvent name="React developer" /> </div> </React.StrictMode>, document.getElementById('root') );
使用 npm 命令启动应用。
npm start
打开浏览器并在地址栏中输入 https://127.0.0.1:3000 并按回车键。
现在,点击 MessageWithEvent 组件,应用将在控制台中发出消息,如下所示。
将额外信息传递给事件处理程序
让我们尝试将额外信息(例如,msgid)传递给事件处理程序。
步骤 1 - 首先,更新 logEventToConsole 以接受一个额外的参数,msgid。
logEventToConsole(msgid, e) { console.log(e.target.innerHTML); console.log(msgid); }
步骤 2 - 接下来,通过在 render 方法中绑定消息 ID 将消息 ID 传递给事件处理程序。
render() { return ( <div onClick={this.logEventToConsole.bind(this, Math.floor(Math.random() * 10))}> <p>Hello {this.props.name}!</p> </div> ); }
步骤 3 - 完整且更新后的代码如下:
import React from 'react'; class MessageWithEvent extends React.Component { constructor(props) { super(props); this.logEventToConsole = this.logEventToConsole.bind(); } logEventToConsole(msgid, e) { console.log(e.target.innerHTML); console.log(msgid); } render() { return ( >div onClick={this.logEventToConsole.bind(this, Math.floor(Math.random() * 10))}> >p>Hello {this.props.name}!>/p> >/div> ); } } export default MessageWithEvent;
运行应用,您会发现事件在控制台中发出了消息 ID。