社区首页 >问答首页 >事件输入和卸载函数的处理

事件输入和卸载函数的处理
EN

Stack Overflow用户
提问于 2020-06-25 18:05:48
回答 1查看 300关注 0票数 0

为了获得用户输入的文本,我尝试使用这个脱附函数。没有取消功能,这是很好的工作(对每个输入的字符触发的问题)。当我尝试使用我的onChange函数时,它不起作用。经过一些研究,我意识到react是在清理事件数据,所以我添加了event.persist()函数,它从池中删除合成事件,并允许用户代码保留对事件的引用。

使用此函数,当我在控制台上打印事件时,我可以看到事件数据。但我无法编写一个代码,可以将此事件传递给onChange函数。

我的函数由输入触发:

代码语言:javascript
代码运行次数:0
复制
const handleOnChange = (onChange) => (e) => {
  e.persist();
  console.log(e.target);
  debounce(onChange, 500);
};

关于输入函数,我有如下所示:

代码语言:javascript
代码运行次数:0
复制
<TextValidator
   name="password"
   value={password}
   onChange={handleOnChange(onChange)}
/>

我有一种感觉,这是一个愚蠢的错误,但我是在数小时前,没有成功地发现哪里的问题。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 19:58:39

debounce函数返回函数,但尚未执行。这样你就可以这样想了。

代码语言:javascript
代码运行次数:0
复制
const handleOnChange = (onChange) => (e) => {
  e.persist();
  console.log(e.target);
  debounce(onChange, 500)();
};

这是行不通的,因为每次调用handleOnChange时,都会创建一个新的退欧函数。您必须保存删除函数的某些位置并重用它。

代码语言:javascript
代码运行次数:0
复制
const debouncedOnChange = debounce((func) => {
  fucn();
}, 500);

const handleOnChange = (onChange) => (e) => {
  console.log(e.target);
  e.persist();
  debouncedOnChange(onChange);
};

你可以通过这样的论点

代码语言:javascript
代码运行次数:0
复制
const debouncedOnChange = debounce((func) => {
  func();
}, 500);

const handleOnChange = (onChange) => (e) => {
  console.log(e.target);
  e.persist();
  debouncedOnChange(() => onChange(e));
};

如果您使用react <=16,请小心使用事件池

https://codesandbox.io/s/peaceful-margulis-mc8stj上的可选解决方案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62586914

复制
相关文章
Dom 事件处理函数
别人整理的,我顺手就给捏来了哈哈。很详细的一些事件,浏览器支持情况,以及详细的说明。在这里向整理者致敬。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr
练小习
2017/12/29
8480
对用户输入事件的处理去抖动
对输入事件处理函数去抖动,存储事件对象的值,然后在requestAnimationFrame 回调函数中修改样式属性
吴裕超
2018/12/12
9040
jQuery 来处理常见的输入框的事件
根据实际情况修改选择器以匹配你的输入框。通过调用 .on() 方法来绑定事件,并提供一个事件处理函数。当事件触发时,相应的函数将执行。
王小婷
2023/09/23
4830
this 指向4 — 事件处理函数中的 this
本文继续讨论 this 指向 问题,今天讨论: 事件处理函数中的 this 文末尾有关于this的面试题,可直接查看 0 1 事件处理函数中的 this 示例1: <button id="btnTest" onclick="console.log(this)">Test</button> <button id="btnTest2" onclick="(function(){console.log(this)})()"> Test2</button> 点击结果为: 示例2: //场景1 let
用户9914333
2022/07/22
8460
this 指向4  — 事件处理函数中的 this
React的事件处理函数用法详解!
页面交互必然会伴随事件的发生,譬如HTML中的一个button被点击了一下,接下来页面应该怎么反应?就是需要button的onClick事件函数来处理。
Learn-anything.cn
2021/11/28
9000
jQuery 事件注册和事件处理
语法: element.事件(function(){}) $ ("div"). click (function(){事件处理程序 } 其他事件和原生基本-致。 比如mouseover. mouseout. blur. focus. change. keydown. keyup. resize. scroll 等
清出于兰
2020/10/26
4.3K0
只了解View的事件分发是不够的,来看下输入系统对事件的处理
在上一篇文章中,我们学习了IMS的诞生(创建),IMS创建后还会进行启动,这篇文章我们来学习IMS的启动过程和输入事件的处理。
用户1269200
2018/12/18
7300
只了解View的事件分发是不够的,来看下输入系统对事件的处理
jquery注册事件处理函数常用的几种方式
需要的朋友可以做一下参考,下面就以click事件为例子: 第一种方式: $(document).ready(function(){ $("#button").click(function(){ console.log("yourdomain.net"); }) }); 第二种方式(这种方法不建议使用,新版已废弃了 bind函数): $(document).ready(function(){ $('#button').bind("click", function(){ consol
IT工作者
2022/02/17
6700
html 输入框输入事件,input输入框事件「建议收藏」
onfocus -> 键盘输入 -> onkeydown -> onkeypress -> onkeyup -> oninput -> 失去焦点 -> onchange -> onblur
全栈程序员站长
2022/09/01
6.3K0
事件监听函数,以及事件的捕获和冒泡机制
事件一般是用于浏览器和用户操作之间的交互,当用户执行某些特殊的操作时,浏览器给予反应,触发绑定的事件,事件流,事件发生时会在元素节点和根节点之间按照约定的顺序传播,事件经过的所有节点都会受到事件的影响,这个传播过程被称为DOM事件流
子舒
2022/06/09
1.3K0
事件监听函数,以及事件的捕获和冒泡机制
iOS 事件传递和处理
iPhone拥有很好的用户交互体验,这源于iOS系统对交互事件的高效处理和高优响应; App开发者处理用户交互非常便捷,这源于iOS系统和UIKit对用户操作做了封装和默认处理; 本文围绕iOS的事件传递和处理,探究其具体过程。
落影
2021/05/06
1.5K0
JavaScript函数、对象和事件
1. 函数 JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。 函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。 圆括号可包括由逗号分隔的参数,由函数执行的代码被放置在花括号 {} 中: function name(参数 1, 参数 2, 参数 3) { 要执行的代码 } 当 JavaScript 到达 return 语句,函数将停止执行。 不使用 () 访问函数将返回函数声明而不是函数结果。name 引用的是函数对象,而 name() 引用的
hotarugali
2022/03/01
6160
istio的数据存储和事件处理
ConfigStore描述了基础平台必须支持的一组平台无关的API,以存储和检索Istio配置。配置键定义为配置对象的类型,名称和命名空间的组合。保证配置密钥在存储中是唯一的。此处显示的存储接口假定基础存储层支持_Get_(列表),_Update_(更新),_Create_(创建)和_Delete_语义,但不保证任何事务语义。_Update_,_ Create_,和_Delete_是变量操作。这些操作是异步的,您可能不会立即看到效果(例如,在对存储进行更改后,_Get_可能不会立即通过键返回对象。)即使操作成功,也可能会出现间歇性错误,因此您应始终检查对象存储是否已被修改即使变异操作返回错误。应该使用_Create_操作创建对象并使用_Update_操作更新对象。资源版本记录每个对象上的最后一个变异操作。如果将变异应用于对象的修订版本与纯等式定义的基础存储所期望的版本不同,则操作将被阻止。此接口的客户端不应假设版本标识符的结构或顺序。从此接口提供和返回的对象引用应视为只读。修改它们会违反线程安全性。
有点技术
2021/01/08
7370
OnKeyPress事件和Javascript检测键盘输入
对于有些时候,我们需要检测用户键盘输入的键盘信息,来处理一些相应的事件。 这里田子建议使用OnKeyPress=“”事件来处理。相类似的还有OnKeyUp和OnKeyDown事件,这些田子个人认为都不是特别的理想化。 假如,我们预定义一个方法function EventCommand(oEvent){ document.write(oEvent.keyCode); },这个方法用来显示输入键盘的键值。那么在OnKeyPress传值的时候,就必须这么传:OnKeyPress="EventCommand(eve
磊哥
2018/05/09
2.1K0
React技巧之输入onFocus和onBlur事件
原文链接:https://bobbyhadz.com/blog/typescript-react-onfocus-onblur-event-type[1]
chuckQu
2022/08/19
2K0
Android输入系统的事件传递流程和IMS的诞生
很多同学可能会认为输入系统是不是和View的事件分发有些关联,确实是有些关联,只不过View事件分发只能算是输入系统事件传递的一部分。这个系列讲的输入系统主要是我们不常接触的,但还是需要去了解的那部分。
用户1269200
2018/12/05
1.8K0
Android输入系统的事件传递流程和IMS的诞生
Redis的事件驱动模型,文件事件处理客户端连接的输入输出
Redis使用事件驱动模型来实现高性能和并发处理能力。事件驱动模型基于异步I/O机制,它的核心组件有事件循环、事件驱动器和事件处理器。
一凡sir
2023/09/22
4740
Redis的事件驱动模型,文件事件处理客户端连接的输入输出
activiti 事件监听_js监听事件和处理事件
本文个人博客地址:Activiti7事件监听 (leafage.top) 好久没有记录笔记了,最近做了一些关于工作流的事情,记录一下使用activiti 7的一些经验。 需求: 在流程发起和流程操作的过程中,给相关人员发送流程审批的通知提醒; 不要在配置流程时手动添加,不能侵入到流程操作的过程,影响流程执行; 这个怎么入手呢?没搞过activiti,activiti7 的官方文档写的跟屎一样烂,感觉好难呀😔… 文档参考性不高,那就试试看官方的示例,找到 activiti 的 repository
全栈程序员站长
2022/11/10
8.9K0
activiti 事件监听_js监听事件和处理事件
点击加载更多

相似问题

卸载前事件和内容处理=附件

33

处理Android卸载事件

12

JSF中的页面卸载事件处理

13

事件处理程序和函数

22

“卸载前”和“卸载”事件是如何工作的?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文