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;
相关推荐
NoneCoder1 小时前
CSS系列(14)--后处理器详解
前端·css
半桶水专家1 小时前
js 中的console使用详解
开发语言·javascript·ecmascript
靠谱杨1 小时前
【Linux服务器nginx前端部署详解】ubantu22.04,前端Vue项目dist打包
linux·服务器·前端·vue.js·经验分享·阿里云·腾讯云
猫猫村晨总1 小时前
前端样式练手:阴阳图+时钟的组合
前端·css·css3
远洋录1 小时前
前端单元测试实战:从零开始构建可靠的测试体系
前端·人工智能·react
李明一.2 小时前
探索 Echarts 绘图:数据可视化的奇妙之旅
前端·信息可视化·echarts
violet_evergarden.2 小时前
HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
前端·css·vue.js·开源·html
下雪了 ~3 小时前
HTTP和HTTPS的区别有哪些?
服务器·前端·笔记·网络协议·计算机网络
跟我很快乐4 小时前
JavaScript ES6+ 语法速通
javascript·es6
修谦得益4 小时前
JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升
javascript·js变量提升·词法环境