real跟你侃代码 - 聊聊 e.stopPropagation与e.preventDefault

简介

e.stopPropagation()是一个事件对象的方法,用于停止事件的进一步传播。当在事件处理程序中,调用e.stopPropagation()时,它会阻止事件继续向上层元素进行冒泡或下层元素进行捕获。

在给定的代码中,e.stopPropagation() 被用于阻止 onKeyDown 事件的进一步传播。具体来说,在按下键盘的Enter键时,通过调用e.stopPropagation(),事件不会继续向上层元素传播,这意味着其他包含输入框的父元素不会收到相同的事件。

这样做的目的是为了在按下Enter键时防止触发其他可能与输入框无关的事件或处理程序。通过阻止事件传播,可以确保按下Enter键只会触发输入框相关的事件(例如调用 handleValue()),而不会触发其他意外的行为。 需要注意的是,e.stopPropagation() 只阻止事件的传播,而不会阻止事件的默认行为。如果还需要阻止行为,例如,阻止表单提交),可以在 onKeyDown 事件处理程序中添加 e.preventDefault()

javascript 复制代码
onKeyDown={(e: any) => {
  if (e.keyCode === KeyCode.Enter) {
    e.stopPropagation();
    e.preventDefault(); // 阻止默认行为,如表单提交
    ref.current?.blur?.();
    handleValue();
  }
}}

这样做可以确保在按下 Enter 键时只触发所需的操作,并防止其他意外的行为发生。

应用场景

e.stopPropagation()e.preventDefault() 方法在事件处理中有以下应用场景:

e.stopPropagation() 的应用场景:

  1. 阻止事件冒泡 : 当一个元素触发了某个事件,例如点击事件,该事件会一直向上层元素冒泡,直到达到文档根节点。通过调用 e.stopPropagation() 可以阻止事件继续向上层元素传播,使其只在当前元素上触发,不影响其他元素。这在需要限制事件范围或避免冲突的情况下很有用。

  2. 组织事件委托 : 事件委托是指将事件处理程序绑定在父元素上,通过事件冒泡机制来处理子元素的事件。如果希望某个特定的子元素不触发事件委托,可以在子元素的事件处理程序中调用 e.stopPropagation(),以阻止事件继续向上层元素传播,从而避免被委托的处理程序执行。

e.preventDefault() 的应用场景:

  1. 阻止默认行为 : 某些元素在触发特定事件时会有默认的行为。例如,点击 <a> 标签时会跳转到链接的 URL,提交表单时会刷新页面。通过调用 e.preventDefault(),可以阻止元素触发默认行为,从而在需要自定义行为或防止页面刷新的情况下使用。

  2. 处理自定义交互 : 在一些自定义交互场景中,可以利用 e.preventDefault() 来阻止默认行为,并根据事件的具体情况执行自定义的交互逻辑。例如,通过捕捉拖放事件并阻止默认行为,可以实现自定义的拖放操作。

需要注意的是,在使用这两个方法时,应根据具体需求和场景进行慎重使用。过度使用或错误使用这些方法可能导致意外行为或阻止本应执行的功能。确保清楚理解这两个方法的作用和影响,并根据实际需求正确地应用它们。

小结

本周是8月的最后一周,马上到9月了,有的时候会非常的怅然,感觉每天都在在忙碌,自己好似进步了,又好似在原地踏步。希望上天保佑努力奋斗的孩子。🥤🦋

相关推荐
apcipot_rain3 分钟前
HTML知识概述
前端·javascript·html
leiming611 分钟前
巧用 FreeRTOS 任务通知作“邮箱”:NeoPixel 灯环控制实战
java·前端·算法
茶底世界之下17 分钟前
Harbeth:高性能Metal图像处理库,让你的图片处理速度飞起来!
前端·github·swift
wangfpp19 分钟前
Pretext 如何颠覆前端文本布局
前端
从文处安22 分钟前
「前端何去何从」AI 把开发变快之后:Monorepo 与 Turborepo 如何接住被放大的工程复杂度
前端·人工智能
peterfei22 分钟前
告别浏览器DOM!PureLayout:纯JS/TS布局引擎,让你的CSS在任何环境“起飞”
前端·javascript
农夫山泉不太甜24 分钟前
Node.js 后端服务 Socket 优化深度指南:从基础到 IM 通信实战
前端·后端
农夫山泉不太甜24 分钟前
NestJS 框架 Socket 优化实战指南
前端·后端
烛衔溟26 分钟前
TypeScript 类型别名、字面量类型、联合类型与交叉类型
前端·javascript·typescript·联合类型·类型别名·字面量类型·交叉类型