Javascript 是否有必要清除react中的按钮单击超时?

Javascript 是否有必要清除react中的按钮单击超时?,javascript,reactjs,Javascript,Reactjs,您能帮我告诉是否需要清除react中按钮点击超时? 我有一个示例,我想在单击按钮时显示警报。这是我的代码 哪条路更好 如果我不清除按钮上的超时,是否存在任何性能问题?。如果存在内存泄漏,如果我不清除按钮上的超时,请单击如果您不想调用计时器回调,则只需清除计时器-如果您想取消计时器回调。事实上,如果您取消对显示的代码的注释,回调将立即取消,并且警报将永远不会发生 如果不想取消回调,则不需要清除计时器。与之相关联的资源在计时器调用时释放;浏览器会自动删除其在计时器列表中的条目。如果不想调用计时器回

您能帮我告诉
是否需要清除react中按钮点击超时?
我有一个示例,我想在单击按钮时显示警报。这是我的代码

哪条路更好


如果我不清除按钮上的超时,是否存在任何性能问题?。如果存在内存泄漏,如果我不清除按钮上的超时,请单击

如果您不想调用计时器回调,则只需清除计时器-如果您想取消计时器回调。事实上,如果您取消对显示的代码的注释,回调将立即取消,并且
警报将永远不会发生


如果不想取消回调,则不需要清除计时器。与之相关联的资源在计时器调用时释放;浏览器会自动删除其在计时器列表中的条目。

如果不想调用计时器回调-如果想取消计时器回调,则只需清除计时器。事实上,如果您取消对显示的代码的注释,回调将立即取消,并且
警报将永远不会发生


如果不想取消回调,则不需要清除计时器。与之相关联的资源在计时器调用时释放;浏览器会自动删除计时器列表中的条目。

当超时添加到窗口元素时,它将始终存在。(直到页面刷新)这在技术上是内存泄漏。。。只有在多次(成百上千)单击按钮时,性能才会开始受到影响。。。但它通常仍然是最佳实践。它将始终存在,因为超时被添加到窗口元素中。(直到页面刷新)这在技术上是内存泄漏。。。只有在多次(成百上千)单击按钮时,性能才会开始受到影响。。。但这仍然是最好的做法。谢谢。但是如果组件卸载了呢?我需要清理吗timerout@user944513-这完全取决于卸载组件时是否要取消计时器回调。如果您正在回调中设置状态,则是,您确实要取消。如果你不是,那就看你了。谢谢,我理解。但是,如果您看到我的示例,当我单击
show按钮时,我看不到任何差异,它装载我的组件并添加使用超时显示警报的单击。在cleartimeout或cleartimeout@user944513这是因为超时设置为
0
,因此,在事件触发之前,您没有机会卸载组件。如果将超时更改为类似于
2000
(2s)的值,并在设置计时器后再次按“显示”,则只会触发第二个事件处理程序,因为第一个事件处理程序已被清除。谢谢。但是如果组件卸载了呢?我需要清理吗timerout@user944513-这完全取决于卸载组件时是否要取消计时器回调。如果您正在回调中设置状态,则是,您确实要取消。如果你不是,那就看你了。谢谢,我理解。但是,如果您看到我的示例,当我单击
show按钮时,我看不到任何差异,它装载我的组件并添加使用超时显示警报的单击。在cleartimeout或cleartimeout@user944513这是因为超时设置为
0
,因此,在事件触发之前,您没有机会卸载组件。如果将超时更改为类似于
2000
(2s)的值,并在设置计时器后再次按“显示”,则只会触发第二个事件处理程序,因为第一个事件处理程序已被清除。
  let id;
  const onclick = () => {
    // first way
    id = setTimeout(() => {
      alert("---");
    }, 0);
    // is it required ?
    //clearTimeout(id);

    // second way without clear
    const second = setTimeout(() => {
      alert("---");
    }, 0);
  };
  useEffect(() => {
    return () => {
      console.log("-----", id);
      // is it required ?
      clearTimeout(id);
    };
  });