Skip to content

No double click detection with useEffect #24

@carlosporta

Description

@carlosporta

I am trying to detect double clicks and single clicks on buttons.

function App() {
  const buttonRef = useRef();
  const [message, setMessage] = useState();
  const [ws, setWS] = useState();

  useEffect(() => {
   const localWS = new WebSocket('ws://192.168.31.104:8000/ws');
    localWS.onmessage = (event) => {}
  }, []);

  useDoubleClick({
    onSingleClick: e => {
      console.log(e, 'single click');
    },
    onDoubleClick: e => {
      console.log(e, 'double click');
    },
    ref: buttonRef,
    latency: 250
  });

  return <button ref={buttonRef}>Click Me</button>
}
export default App;

This function works perfectly, but when I try to change a state variable, the useDoubleClick hooks stops to detect double clicks.

function App() {
  const buttonRef = useRef();
  const [message, setMessage] = useState();
  const [ws, setWS] = useState();

  useEffect(() => {
    const localWS = new WebSocket('ws://192.168.31.104:8000/ws');
    localWS.onmessage = (event) => {
      setMessage(JSON.parse(event.data)) // HERE
      setWS(localWS); // HERE
    }
  }, []);
  
  useDoubleClick({
    onSingleClick: e => {
      console.log(e, 'single click');
    },
    onDoubleClick: e => {
      console.log(e, 'double click');
    },
    ref: buttonRef,
    latency: 250
  });
  
  return <button ref={buttonRef}>Click Me</button>

}

What am I doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions