如何在按钮单击上调用函数以侦听React Hooks中的另一个鼠标单击?

雷迪

我正在使用React Hooks,我想做这样的事情:我有一个按钮,当单击时,我希望它监听另一个鼠标单击,但是我读到我不应该在函数中调用addEventListener。

我在useEffect中尝试了addEventListener,但失败了。我希望事件监听器仅在单击按钮时触发,但是useEffect将始终在此之前运行。我不知道该怎么做。

useEffect(() = > {
    document.addEventListener("click", mouseClickHandler)

    return () => {
        document.removeEventListener("click", mouseClickHandler) 
    }
})

const buttonClickHandler = () => {
    // ?? has to do something here to trigger the addEventListener

}

const mouseClickHandler = (event) => {
    console.log(event.target); // and do other stuff
}

return(
    <button onClick={buttonClickHandler} />
)
我是Joe Too

您应该有一个状态变量来跟踪按钮是否被单击,然后让useEffect对它进行反应以添加您的侦听器:

import { useEffect, useState } from 'react'

const [didClickButton, setDidClickButton] = useState(false)

useEffect(() => {
  if (didClickButton) {
    document.addEventListener("click", mouseClickHandler)
    return () => {
      document.removeEventListener("click", mouseClickHandler)
    }
  } else {
    document.removeEventListener("click", mouseClickHandler)
  }
}, [didClickButton])

const buttonClickHandler = () => {
  setDidClickButton(true)
}

const mouseClickHandler = (event) => {
  console.log(event.target)
  setDidClickButton(false) // If you want to reset the behavior again
}

return(
    <button onClick={buttonClickHandler} />
)

当我坐在酒吧里喝金巴利酒时,这是完全未经测试的,因此您可能需要稍作调整。但这是总的想法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在按钮单击事件中从另一个类调用方法?

来自分类Dev

如何在按钮的不同单击上调用不同的JS函数?

来自分类Dev

如何在按钮单击事件中更改另一个表单名称

来自分类Dev

如何在按钮单击时调用jquery函数?

来自分类Dev

如何在按钮单击时调用jquery函数?

来自分类Dev

如何在按钮单击时调用jQuery函数?

来自分类Dev

如何在html按钮上调用php脚本/函数单击

来自分类Dev

如何在按钮上单击以显示其类的另一个布局(xml)?

来自分类Dev

单击按钮如何调用另一个活动?

来自分类Dev

单击另一个元素Selenium中的按钮

来自分类Dev

如何在鼠标单击的任何地方使用Tkinter创建一个球?

来自分类Dev

当我单击C#中的另一个按钮时如何调用按钮单击事件

来自分类Dev

如何通过停止特定属性在另一个按钮中调用一个按钮单击事件

来自分类Dev

如何在类中调用函数以在php中调用另一个类?

来自分类Dev

如何在另一个项目中引用的用户控件中单击呼叫按钮?

来自分类Dev

单击另一个组件中的按钮时,如何显示/隐藏React组件?

来自分类Dev

如何从另一个单击事件函数内的单击事件调用函数?

来自分类Dev

如何使用SDL在C中的鼠标单击上调用函数?

来自分类Dev

我如何处理位于 JavaFX 中另一个按钮中的按钮单击?

来自分类Dev

单击另一个活动中的按钮时,调用检查Internet连接类

来自分类Dev

如何在单击另一个按钮时单击一个按钮 angular 2?

来自分类Dev

单击一个按钮将调用JAVA Swing中另一个按钮的actionListener

来自分类Dev

如何通过单击另一个在XAML中旋转一个元素?

来自分类Dev

在与第一个相同的位置触发额外的鼠标单击事件

来自分类Dev

使用 Three.js 投射一个对象以启用鼠标单击事件

来自分类Dev

用ajax在按钮单击上调用php函数并通过参数解析

来自分类Dev

如何通过单击另一个表单的按钮来更改一个表单中的按钮的文本?

来自分类Dev

在Vue JS中单击按钮后,如何隐藏警报并显示另一个警报?

来自分类Dev

如何更改另一个类中单击的按钮的文本?(Python-tkinter)

Related 相关文章

  1. 1

    如何在按钮单击事件中从另一个类调用方法?

  2. 2

    如何在按钮的不同单击上调用不同的JS函数?

  3. 3

    如何在按钮单击事件中更改另一个表单名称

  4. 4

    如何在按钮单击时调用jquery函数?

  5. 5

    如何在按钮单击时调用jquery函数?

  6. 6

    如何在按钮单击时调用jQuery函数?

  7. 7

    如何在html按钮上调用php脚本/函数单击

  8. 8

    如何在按钮上单击以显示其类的另一个布局(xml)?

  9. 9

    单击按钮如何调用另一个活动?

  10. 10

    单击另一个元素Selenium中的按钮

  11. 11

    如何在鼠标单击的任何地方使用Tkinter创建一个球?

  12. 12

    当我单击C#中的另一个按钮时如何调用按钮单击事件

  13. 13

    如何通过停止特定属性在另一个按钮中调用一个按钮单击事件

  14. 14

    如何在类中调用函数以在php中调用另一个类?

  15. 15

    如何在另一个项目中引用的用户控件中单击呼叫按钮?

  16. 16

    单击另一个组件中的按钮时,如何显示/隐藏React组件?

  17. 17

    如何从另一个单击事件函数内的单击事件调用函数?

  18. 18

    如何使用SDL在C中的鼠标单击上调用函数?

  19. 19

    我如何处理位于 JavaFX 中另一个按钮中的按钮单击?

  20. 20

    单击另一个活动中的按钮时,调用检查Internet连接类

  21. 21

    如何在单击另一个按钮时单击一个按钮 angular 2?

  22. 22

    单击一个按钮将调用JAVA Swing中另一个按钮的actionListener

  23. 23

    如何通过单击另一个在XAML中旋转一个元素?

  24. 24

    在与第一个相同的位置触发额外的鼠标单击事件

  25. 25

    使用 Three.js 投射一个对象以启用鼠标单击事件

  26. 26

    用ajax在按钮单击上调用php函数并通过参数解析

  27. 27

    如何通过单击另一个表单的按钮来更改一个表单中的按钮的文本?

  28. 28

    在Vue JS中单击按钮后,如何隐藏警报并显示另一个警报?

  29. 29

    如何更改另一个类中单击的按钮的文本?(Python-tkinter)

热门标签

归档