event 用 ts 类型声明

一、DOM 事件类型声明示例

1. 鼠标点击事件(`MouseEvent`)

使用 React.MouseEvent<HTMLButtonElement> 定义

javascript 复制代码
import React from "react";



const MyComponent: React.FC = () => {

  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {

    // 这里可以访问MouseEvent的相关属性,比如获取鼠标点击的坐标

    console.log("Client X:", event.clientX);

    console.log("Client Y:", event.clientY);

  };



  return <button onClick={handleClick}>Click Me</button>;

};



export default MyComponent;

2. 键盘输入事件(`KeyboardEvent`)

使用 React.KeyboardEvent<HTMLInputElement> 定义

javascript 复制代码
import React from "react";



const MyComponent: React.FC = () => {

  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {

    if (event.key === "Enter") {

      console.log("用户按下了回车键");

    }

  };



  return <input onKeyDown={handleKeyDown} placeholder="请输入内容" />;

};



export default MyComponent;

3. 表单提交事件(`FormEvent`)

使用 React.FormEvent<HTMLFormElement> 定义

javascript 复制代码
import React from "react";



interface FormData {

  username: string;

  password: string;

}



const MyComponent: React.FC = () => {

  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {

    event.preventDefault();

    const formData: FormData = {

      username: (

        event.currentTarget.elements.namedItem("username") as HTMLInputElement

      ).value,

      password: (

        event.currentTarget.elements.namedItem("password") as HTMLInputElement

      ).value,

    };

    console.log("提交的表单数据:", formData);

  };



  return (

    <form onSubmit={handleSubmit}>

      <input type="text" name="username" placeholder="用户名" />

      <input type="password" name="password" placeholder="密码" />

      <button type="submit">提交</button>

    </form>

  );

};



export default MyComponent;
相关推荐
Zestia14 分钟前
页面点击跳转源代码?——element-jumper插件实现
前端·javascript
前端小白199514 分钟前
面试取经:工程化篇-webpack性能优化之优化loader性能
前端·面试·前端工程化
PineappleCoder14 分钟前
大小写 + 标点全搞定!JS 如何精准统计单词频率?
前端·javascript·算法
zhangbao90s16 分钟前
Web组件:使用Shadow DOM
前端
hhy前端之旅16 分钟前
语义版本控制:掌握版本管理的艺术
前端
coding随想16 分钟前
深入浅出DOM操作的隐藏利器:Range(范围)对象——掌控文档的“手术刀”
前端
前端小白199517 分钟前
面试取经:工程化篇-webpack性能优化之减少模块解析
前端·面试·前端工程化
一枚前端小能手17 分钟前
🏗️ 项目越来越大维护不动了,微前端架构了解一下
前端
KasukabeTsumugi17 分钟前
TypeScript:联合类型可以转化为元组类型吗?数组如何用联合类型逐项约束?
javascript
文艺理科生26 分钟前
Nuxt.js入门指南-Vue生态下的高效渲染技术
前端·vue.js·nuxt.js