MCPcopy
hub / github.com/imbhargav5/rooks / useOnClickRef

Function useOnClickRef

packages/rooks/src/hooks/useOnClickRef.ts:13–45  ·  view source on GitHub ↗

* useOnClickRef hook * * This hook runs a callback for both clicks and tap events when the element is clicked or tapped. * * @param {Function} onClick The callback function to run on click or tap * @returns {Function} A callback ref which can be attached to an element

(onClick: () => void)

Source from the content-addressed store, hash-verified

11 * @returns {Function} A callback ref which can be attached to an element
12 */
13function useOnClickRef(onClick: () => void) {
14 const [node, setNode] = useState<HTMLElement | null>(null);
15 const handleEvent = useCallback(
16 (event: MouseEvent | TouchEvent) => {
17 event.preventDefault();
18 onClick();
19 },
20 [onClick]
21 );
22
23 const freshCallback = useFreshCallback(handleEvent);
24
25 useEffect(() => {
26 if (node) {
27 node.addEventListener("click", freshCallback);
28 node.addEventListener("touchend", freshCallback);
29
30 return () => {
31 node.removeEventListener("click", freshCallback);
32 node.removeEventListener("touchend", freshCallback);
33 };
34 }
35 return noop;
36 }, [node, freshCallback]);
37
38 const ref = useCallback((element: HTMLElement) => {
39 if (element) {
40 setNode(element);
41 }
42 }, []);
43
44 return ref;
45}
46
47export { useOnClickRef };

Callers 2

ssr.spec.tsFile · 0.85

Calls 3

useFreshCallbackFunction · 0.90
addEventListenerMethod · 0.65
removeEventListenerMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…