useEventListener

Add an event listener to an element.

https://www.shaktools.com/shak-hooks
Browser

API Reference

Installation

terminal
pnpm add @shak-hooks/usehooks
import.ts
import { useEventListener } from "@shak-hooks/usehooks";
Source: packages/react/src/useEventListener.ts

Signature

signature.ts
export function useEventListener(eventName: string, handler: (event: any) => void, element?: EventTarget | null)

Parameters

NameTypeOptionalDefault
eventNamestringNo-
handler(event: any) => voidNo-
elementEventTarget | nullYes-

Returns

unknown

Implementation

use-event-listener.ts
1import { useEffect, useRef } from "react";
2
3export function useEventListener(
4 eventName: string,
5 handler: (event: Event) => void,
6 element: HTMLElement | Window = window
7) {
8 const savedHandler = useRef(handler);
9
10 useEffect(() => {
11 savedHandler.current = handler;
12 }, [handler]);
13
14 useEffect(() => {
15 const isSupported = element && element.addEventListener;
16 if (!isSupported) return;
17
18 const eventListener = (event: Event) => savedHandler.current(event);
19 element.addEventListener(eventName, eventListener);
20
21 return () => {
22 element.removeEventListener(eventName, eventListener);
23 };
24 }, [eventName, element]);
25}

Advertisement

Google Ads

Usage

example.tsx
1import { useEventListener } from "@shak-hooks/usehooks";
2
3const result = useEventListener("...", undefined, undefined);
4// result: unknown
5// Use values directly (React state).

Let‘s do great work together

Empowering creators with free, high-performance AI, SEO, and developer tools. Join thousands of users optimizing their workflow with Shak-Tools.

Tools10+ Free
UsersGlobal

Stay in the loop

Join our newsletter for the latest AI tools and updates.

ShakTools
© 2025 Shaktools. All Rights Reserved.Privacy Policy