当前位置: 首页 > news >正文

我这是这样知道 React TS 中的 Event Handler 类型的

开头

现在 TypeScript 的发展也越来越成熟,已逐渐应用到我们开发的前端项目之中,它能够带来类型提示,提前规避类型上的错误,来提高项目代码的健壮性,以及更高效的编码效率,前提就是我们需要定义好相应的类型,才能更好的拥有代码上的类型提示。

记得在 React 项目中刚使用 ts 的时候,遇到事件的 Event Handler 中的 e 不知道它怎么去定义,现在来从新盘点一下 React TS 中的 Event Handler 。

就比如下面没有给它定义类型,TS 编译器就会提示错误:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g4tQxROm-1673854026780)(React%20TS%20%E4%B8%AD%E7%9A%84%20Event%20Handler%20658cec456c2a4fc38c1ba25866e27988/Untitled.png)]

开始 开始 !!

onCLick 事件

这个是最常用的一个事件名称,这里没什么好说的,它的 event 类型也比较少需要去特殊定义,但是可以了解一下,它的类型为:React.MouseEvent<T> ,它并且接收一个泛型,也就是元素类型。

所有的事件类型都接收一个泛型。

import { MouseEvent } from "react";
 
function App() {
  const handleClick = (e: MouseEvent<HTMLButtonElement>) => {
    
  };
  return (
    <div className="App">
      <button onClick={handleClick}>onClick</button>
    </div>
  );
}

注意:MouseEvent 不是自带的,而是需要从 react 库中引入,因为 react 内部自己写了一套合成事件系统。简单说一下,本质上在元素上定义 onClick 不会通过 addEevntListener 绑定到当前元素上,而是绑定在根元素 app 上,通过事件机制来执行,减少浏览器内存,也是 react 做的一个优化点,也更好控制内部应用所有的事件。

〈HTMLButtonElement〉 如果是 div 过着其他的 元素就将 Button 替换成 HTMLDivElement 即可。

onChange 事件

记得刚上手 TS 项目中写表单,第一个就查的它的 event 什么类型,它的类型就是:React.ChangeEvent<HTMLInputElement>

import { ChangeEvent } from "react";

function App() {
  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    console.log(e.target.value);
  };
  return (
    <div className="App">
      <input placeholder="TS Event Handler" onChange={handleChange} />
    </div>
  );
}

onKeyDown 事件

键盘事件,也是逃不过的回车事件方法调用。它的类型的为:React.KeyboardEvent<HTMLInputElement>

import { KeyboardEvent } from "react";

function App() {
  const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
    if (e.keyCode === 13) {
      console.log("回车了");
    }
  };
  return (
    <div className="App">
      <input placeholder="TS Event Handler" onKeyDown={handleKeyDown} />
    </div>
  );
}

onSubmit 事件

表单提交事件类型,它的类型的为:React.FormEvent<HTMLFormElement>

import { FormEvent } from "react";

function App() {
  const handleSubmit = (e: FormEvent<HTMLFormElement>) => { 

  };
  return (
    <div className="App">
      <form onSubmit={handleSubmit}>

      </form>
    </div>
  );
}

onDrop 拖拽事件

我遇到使用的地方就是拖拽文件上传,还有就是拖拽内容更改位置。它的事件类型为:React.DragEvent<HTMLElement>

import { DragEvent } from "react";

function App() {
  const handleDrop = (e: DragEvent<HTMLElement>) => { 

  };
  return (
    <div className="App" onDrop={handleDrop}>

    </div>
  );
}

遇到新的 Event 那么类型怎么查看?

这里直接鼠标 hover 到事件名上,TS 编译器就会提示出来,比如下面👇:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VOLede4h-1673854026781)(React%20TS%20%E4%B8%AD%E7%9A%84%20Event%20Handler%20658cec456c2a4fc38c1ba25866e27988/Untitled%201.png)]

此时就知道 event 类型就是 React.DragEvent<HTMLDivElement> 了,去掉后面 Handler 即可。

往后就不用像刚开始接触 React + TS 项目的时候去一个个查了。

相关文章:

  • 西安专业做网站公司/百度怎么投放广告
  • 清河做网站/搜索引擎优化理解
  • 怎样安装免费的wordpress/做推广
  • 东营做网站/百度官网入口链接
  • hbuider 做网站/武汉seo排名公司
  • 做网站朋友圈广告的文案怎么写/网页宣传
  • Anaconda+VSCode配置tensorflow
  • 第二章.线性回归以及非线性回归—标准方程法
  • 哈希表题目:公平的糖果交换
  • 英伟达Flex-unity插件
  • RESTful的风格提倡 URL 地址使用统一的风格设计
  • 关于机器人状态估计(11)-VIO单目与双目/雷达Lidar SLAM/未来的机器人
  • SpringBoot处理跨域总结
  • mysql定期删除过期数据
  • 解决前后端分离Vue项目部署到服务器后出现的302重定向问题
  • docker中基础内容
  • SocketCAN 命名空间 VCAN VXCAN CANGW 举例
  • 渔业养殖远程监控系统解决方案