UNPKG

@navikt/ds-react

Version:

React components from the Norwegian Labour and Welfare Administration.

35 lines (30 loc) 826 B
"use client"; import { useEffect } from "react"; export interface ListenerT { addEventListener( name: string, handler: (event?: any) => void, ...args: any[] ); removeEventListener( name: string, handler: (event?: any) => void, ...args: any[] ); } /* https://github.com/streamich/react-use/blob/master/src/useEvent.ts */ export const useEventListener = <T extends ListenerT>( name: Parameters<ListenerT["addEventListener"]>[0], handler: Parameters<ListenerT["addEventListener"]>[1], target: null | T | Window = typeof window !== "undefined" ? window : null, ): void => { useEffect(() => { if (!target) { return; } target?.addEventListener(name, handler); return () => { target?.removeEventListener(name, handler); }; }, [name, handler, target]); };