Skip to content

useEventListener

A Vue 3 composable that attaches an event listener to a target element or object and automatically cleans it up when the component unmounts.

Installation

bash
npx kuro-ui add useEventListener
bash
npx github:Bartek-Nowak/Kuro add useEventListener

Usage

ts
import { useEventListener } from '@/composables/kuro/useEventListener';

const handler = (event: Event) => {
  console.log(event);
};

useEventListener(window, 'resize', handler);

Parameters

NameTypeDescription
targetEventTarget | (() => EventTarget | null)The target to attach the event listener to. Can be a direct EventTarget or a function returning one (to handle refs).
eventstringThe name of the event to listen for (e.g. 'click', 'scroll').
handlerEventListenerOrEventListenerObjectThe event handler function or object.
optionsboolean | AddEventListenerOptions (optional)Options to pass to addEventListener, such as capture or passive.

Features

  • Adds the event listener when the component is mounted.
  • Removes the event listener automatically when the component is unmounted.
  • Supports reactive targets by passing a function that returns the target.

Example

ts
<script setup lang="ts">
import { ref } from 'vue';
import { useEventListener } from '@/composables/kuro/useEventListener';

const divRef = ref<HTMLElement | null>(null);

const onClick = () => {
  console.log('Div clicked!');
};

useEventListener(() => divRef.value, 'click', onClick);
</script>

<template>
  <div ref="divRef">Click me!</div>
</template>