当前位置: 首页 > 知识库问答 >
问题:

停止键入React Js[duplicate]时调用函数

段干靖
2023-03-14

我尝试在停止键入时执行某些操作,我尝试此代码但不工作

const handler=(e)=>{
  let time;
  clearTimeout(time);
  time = setTimeout(() => {
     console.log("click");
  }, 2000);
}
<input onChange={handler}/>

共有3个答案

陶博耘
2023-03-14

时间应该超出您的职责范围。

var time;
const handler = (cmp) => {
  clearTimeout(time);
  time = setTimeout(() => {
    console.log(`You typed ${cmp.value}`);
  }, 2000);
}
<input onChange="handler(this)" />
丁星火
2023-03-14

存储超时ID的变量需要在函数外部定义,否则每次调用处理程序时都会得到一个新的未定义变量。

也就是说,你可能正在重新发明轮子。

齐振
2023-03-14

如果在2秒内有更多的输入,我假设您想取消计时器。目前,时间变量的作用域是处理函数,因此当函数完成执行时,该值将丢失。

尝试使用状态跟踪计时器:

const [timerID, setTimerID] = useState(null);
  
const handler = (e) => {
  clearTimeout(timerID);
  const id = setTimeout(() => console.log("click"), 2000);
  setTimerID(id)
}
  
return <input onChange={handler}/>
 类似资料:
  • 我正在制作一个简单的页面,您可以扫描或键入一个UPC,它会自动添加到一个表中以供显示。我放弃了一些代码来启动一个计时器,它在键入完成后等待3秒,然后在我的表中创建一个新行来显示键入的UPC和项目信息。 但是,这段代码有一些问题。(我的问题) a.)当您手动输入UPC时,新行操作会发生多次(为同一UPC插入多行),但当您使用条形码扫描器扫描UPC时,它只完成一次操作。(这是正确的) b)当您从字段中

  • 我用tkinter创建了一个文本框。当按下Ctrl返回时,以下代码将停止创建换行符。 但是,我还想在用户键入Ctrl-Return时调用一个函数。下面调用该函数,但随后创建一个换行: 如果交换第三行和第四行,则没有换行符,但也不会调用该函数。 有没有一种既防止换行符又调用函数的方法?

  • 因此,有人知道如何杀死一个线程,同时它调用任何JNI函数而不使用while循环。

  • 我遇到的问题是,如何发送enter以结束循环?因为系统。在里面read()取第一个数字,如果我再加上2个数字,示例可以是, 条目: 2 3(输入)读2个数字和和 1 2(输入)读2个数字和和 (enter)这里结束循环,因为enter和no数字,并给出了解决方案 出口: 5. 3. 我不知道我以前发过什么

  • 我们如何在setTimeout中使用。我在构造函数中声明了一个属性。我使用了inside它会抛出一个类似于 我试了很多,但不知道如何解决这个问题。为什么错了?请帮我解决这个问题。。

  • 问题内容: 我有一个搜索字段。现在,它会搜索每个键。因此,如果有人键入“ Windows”,它将使用AJAX搜索每个键入的内容:“ W”,“ Wi”,“ Win”,“Wind”,“ Windo”,“ Window”,“ Windows”。 我希望有一个延迟,因此它仅在用户停止键入200毫秒时才搜索。 函数中没有为此的选项,我已经尝试过了,但是没有用。 我怎样才能做到这一点? 问题答案: 我将这个小