点击按钮时触发防抖

简介: 点击按钮时触发防抖

当在React中点击按钮时触发防抖,并传递一个ID作为参数,你可以使用useRefuseCallback钩子来实现。

import React, { useState, useRef, useCallback } from 'react';
const ButtonComponent = () => {
  const [clickCount, setClickCount] = useState(0);
  const debounceTimeout = useRef(null);
  // 使用 useCallback 包裹回调函数,确保每次渲染都返回同一个引用
  const handleClick = useCallback((id) => {
    clearTimeout(debounceTimeout.current); // 清除之前的定时器
    debounceTimeout.current = setTimeout(() => {
      setClickCount((prevCount) => prevCount + 1); // 执行操作
      console.log('Clicked ID:', id); // 使用传递的ID
    }, 300);
  }, []);
  return (
    <div>
      <p>Click count: {clickCount}</p>
      <button onClick={() => handleClick(123)}>Click Me</button> {/* 传递ID参数 */}
    </div>
  );
};
export default ButtonComponent;


在上述代码中,我们通过在调用handleClick函数时传递一个ID参数(这里是123),实现了将ID作为参数传递给防抖函数内部操作的功能。


在handleClick函数内部,可以通过闭包的方式访问到传递的ID参数,并在需要的地方进行使用(这里是将ID打印到控制台)。


每次点击按钮时,clickCount的值都会自增,并在界面上显示出来。同时,传递的ID参数也会被传递到防抖函数内部进行处理。


这样就实现了在React中点击按钮时触发防抖,并传递一个ID作为参数的效果。你可以根据需要自定义传递的ID值。


在纯JavaScript中,你可以使用setTimeout和闭包来实现按钮点击防抖,并传递一个ID参数。下面是一个示例代码:

let debounceTimeout;
function handleClick(id) {
  clearTimeout(debounceTimeout); // 清除之前的定时器
  debounceTimeout = setTimeout(() => {
    console.log(`Clicked ID: ${id}`); // 使用传递的ID
    // 执行其他操作...
  }, 300);
}
const button = document.getElementById('myButton');
button.addEventListener('click', () => {
  handleClick(123); // 传递ID参数
});


在上述代码中,我们定义了一个全局变量debounceTimeout用于存储定时器的标识。每次点击按钮时,调用handleClick函数并传递一个ID参数(这里是123)。


在handleClick函数内部,首先清除之前的定时器,然后设置一个新的定时器,在300毫秒后执行操作。在操作中,可以通过闭包的方式访问传递的ID参数,并在需要的地方进行使用(这里是将ID打印到控制台)。


这样就实现了在点击按钮时触发防抖,并传递一个ID作为参数的效果。你可以根据需要自定义传递的ID值。请确保将myButton替换为你实际使用的按钮的ID。

相关文章
|
4月前
|
图形学
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
|
5月前
|
JavaScript 前端开发
vue动画——旋转动画(悬浮触发、点击触发)
vue动画——旋转动画(悬浮触发、点击触发)
249 1
|
5月前
|
JavaScript
vue动画——翻转动画(悬浮触发、点击触发)
vue动画——翻转动画(悬浮触发、点击触发)
90 0
|
7月前
|
前端开发 JavaScript 数据安全/隐私保护
前端点击其他输入框的时候,对当上个输入框进行判断(鼠标移出输入框事件,和鼠标点击其他输入框触发事件)
前端点击其他输入框的时候,对当上个输入框进行判断(鼠标移出输入框事件,和鼠标点击其他输入框触发事件)
112 0
|
7月前
页面监听键盘事件
页面监听键盘事件
|
前端开发
按钮防抖
按钮防抖
93 0
|
网络架构
【uniapp】搜索框防抖、自动获取焦点
【uniapp】搜索框防抖、自动获取焦点
966 0
Echarts链接操作弹出窗口防止重复触发点击事件的解决方案
Echarts链接操作弹出窗口防止重复触发点击事件的解决方案
153 0
|
JavaScript 前端开发
JavaScript 点击事件:一个按钮触发另一个按钮
给按钮 2 添加点击事件 click 触发按钮 1 的点击事件,就算给按钮 1 添加样式 display: none; 或 visibility: hidden; 隐藏起来也能触发。
633 0