简体   繁体   English

我可以在 React 应用程序中使用钩子操作事件侦听器吗?

[英]Can I manipulate event listener using hooks in react app?

is it possible to enable/disable event listener based on useState hook ?是否可以基于 useState hook 启用/禁用事件侦听器?

I created a Hook:我创建了一个钩子:

const [ifClicked, setIfClicked] = useState(true);

and a functions :和一个功能:

const handleIfClicked = () => {setIfClicked(!ifClicked)};

const extendTreatments = () =>{
dropdownFB ? setDropdownFB(false) : setDropdownFB(true);
  handleIfClicked();
}

I've got li element with event listeners and function above:我有带有事件侦听器和函数的 li 元素:

<li className="nav-item" 
    onMouseEnter={onMouseEnterFB}
    onMouseLeave={onMouseLeaveFB}
    onClick={extendTreatments}

I've tried to enable/disable event listeners by manipulating hook "ifClicked".我试图通过操纵钩子“ifClicked”来启用/禁用事件侦听器。 The main goal is to once element got clicked don't use event listener "onMouseLeave" (turn it off).主要目标是一旦元素被点击就不要使用事件侦听器“onMouseLeave”(将其关闭)。

<li className="nav-item" 
    onMouseEnter={onMouseEnterFB}
    ifClicked && onMouseLeave={onMouseLeaveFB}
    onClick={extendTreatments}
    >

Instead of adding/removing event listener, consider not running your function at all, if "ifClicked" is false.如果“ifClicked”为假,请考虑根本不运行您的函数,而不是添加/删除事件侦听器。

<li className="nav-item" 
  onMouseEnter={onMouseEnterFB}
  onMouseLeave={ifClicked && onMouseLeaveFB}
  onClick={extendTreatments}
>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM