Hola, traté de eliminar el detector de eventos de clic de evento de un botón.
En mi problema real, tengo varias barras de desplazamiento sincronizadas (cada vez que una cambia, la otra se desplaza a la misma posición) y quiero eliminar el evento onscroll.
Simplifiqué demasiado el ejemplo, pero no funciona. ¿Alguna idea?
import { useRef } from "react"; var btnRef; function clicked(){ alert('btn clicked'); if(btnRef.current){ console.log('remove click listener ...') btnRef.current.removeEventListener('click', clicked); } } function MyComponent(){ btnRef = useRef(); return ( <button ref={btnRef} onClick={clicked}>click me</button> ); } export default MyComponent;const [clicked, setClicked] = useState(false);establecer clic en verdadero al hacer clic en el botón, agregar lógica para mostrar según el valor booleano
Debe usar el estado y actualizarlo cuando se hace clic en el botón por primera vez, por lo que cada vez que se vuelve a hacer clic en el botón, no haga nada.
function MyComponent(){ const [clicked, setClicked] = React.useState(false) function handleClick(){ if(clicked){ return undefiend } setClicked(true) alert('btn clicked'); } return ( <button disabled={clicked} onClick={handleClick}>click me</button> ); } export default MyComponent;