React+TS常用事件类型(event)

本文整理了在React中常见的事件类型,如ChangeEvent用于input元素的onChange,KeyboardEvent包括onKeyDown等键盘事件,FocusEvent对应onFocus和onBlur,FormEvent处理表单提交,DragEvent涉及拖放操作,TouchEvent涵盖触摸动作,WheelEvent处理滚轮事件,AnimationEvent与动画相关,MouseEvent则包含点击和鼠标移动等事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自学react的时候发现写event的事件类型时总是不知道写什么,写any又对不起TS的校验,因此整理了event的事件类型,
使用举例:

const [image, setImage] = useState<File | null>(null);
const chooseImage = (event: ChangeEvent<HTMLInputElement>) => {
   const files = event.target.files;
   if (files) {
     const image = files[0];
     setImage(image);
     console.log('image:', image)
   }
 };

React.KeyboardEvent: 键盘事件,如onKeyDown、onKeyUp、onKeyPress

<input onKeyDown={(e) => console.log(e)} />

React.FocusEvent: 焦点事件,如onFocus、onBlur

<input onFocus={(e) => console.log(e)} />

React.FormEvent: 表单提交事件,如onSubmit

<form onSubmit={(e) => e.preventDefault()}>
	<button type="submit">Submit</button>
</form>

React.DragEvent:拖拽事件,如onDragStart、onDragEnd、onDragOver、onDrop

<div
	draggable
   onDragStart={(e) => console.log(e)}
   onDragOver={(e) => e.preventDefault()}
   onDrop={(e) => console.log(e)}
 ></div>

React.TouchEvent: 触摸事件,如onTouchStart、onTouchMove、onTouchEnd

<div onTouchStart={(e) => console.log(e)}></div>

React.WheelEvent: 滚轮事件,如onWheel

<div onWheel={(e) => console.log(e)}></div>

React.AnimationEvent:动画事件,如onAnimationStart、onAnimationEnd、onAnimationIteration

<div
  style={{ animation: "rotate 1s linear infinite" }}
  onAnimationStart={() => console.log("Start!")}
  onAnimationEnd={() => console.log("End!")}
  onAnimationIteration={() => console.log("Iterate!")}
/>

React.MouseEvent: 鼠标事件,如onClick、onDoubleClick、onMouseEnter等

<button onClick={(e) => console.log(e)}>Click</button>

React.ChangeEvent: input、textarea等元素的onChange事件

<input onChange={(e) => console.log(e)} />

SelectChangeEvent: select元素的onChange事件

<select onChange={(e) => console.log(e)}>
  <option value="1">1</option>
  <option value="2">2</option>
</select>
### 使用 React 和 Ant Design 结合 TypeScript 实现 EventSource (SSE) 为了实现在 React 应用程序中通过 TypeScript 集成 `EventSource` 来处理服务器发送事件(Server-Sent Events),可以按照如下方式构建: #### 创建 React 组件 创建一个新的函数式组件来管理与服务器之间的连接状态,并接收来自服务端的消息。 ```tsx import { useEffect, useState } from 'react'; import { message } from 'antd'; interface Message { data: string; } const ServerSentEventsComponent = () => { const [messages, setMessages] = useState<Message[]>([]); useEffect(() => { let eventSource: EventSource; try { // 初始化 EventSource 连接 eventSource = new EventSource('/api/events'); eventSource.onmessage = function(event) { console.log('New message:', event.data); // 更新消息列表 setMessages(prevMessages => [...prevMessages, JSON.parse(event.data)]); }; eventSource.onerror = function(error) { if (eventSource.readyState === EventSource.CLOSED) { message.error('Connection to server was lost.'); } }; } catch (error) { message.error(`Failed to connect to the server: ${error}`); } return () => { // 清理操作,关闭 EventSource 当组件卸载时 if (eventSource && eventSource.readyState !== EventSource.CLOSED) { eventSource.close(); } }; }, []); return ( <div> <h2>Received Messages:</h2> <ul> {messages.map((msg, index) => <li key={index}>{msg.data}</li> )} </ul> </div> ); }; export default ServerSentEventsComponent; ``` 此代码片段展示了如何设置一个简单的 `EventSource` 客户端,在收到新数据时更新 UI[^1]。同时利用了 Ant Design 的通知功能 (`message`) 提供友好的用户体验反馈。 #### 后端 API 设置 确保后端提供了一个兼容 SSE 协议的接口 `/api/events`,它应该持续推送新的事件前端客户端直到连接被显式断开或超时。 #### 错误处理机制 上述例子包含了基本错误处理逻辑,当遇到网络问题或其他异常情况时会显示相应的提示信息给用户[^2]。 #### 性能考虑 考虑到长时间保持打开 HTTP 流可能带来的资源消耗风险,建议开发者们根据实际应用场景调整重连策略和服务端配置以优化性能表现[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值