or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

build-optimization.mdcli.mdcomponents.mdcontext.mdevent-handling.mdindex.mdjsx-elements.mdloader.mdqrl-system.mdserver-rendering.mdstate-management.mdstyling.mdtasks-resources.mdtesting.md
tile.json

event-handling.mddocs/

Event Handling

Event system with lazy loading and server-side event handling capabilities. Qwik's event system loads event handlers only when needed.

Capabilities

Event Listeners

Add event listeners with automatic lazy loading.

/**
 * Add event listener to current component element
 * @param event - Event name
 * @param handler - QRL event handler
 */
function useOn(event: string, handler: QRL<(event: Event) => void>): void;

/**
 * Add event listener to document
 * @param event - Event name  
 * @param handler - QRL event handler
 */
function useOnDocument(event: string, handler: QRL<(event: Event) => void>): void;

/**
 * Add event listener to window
 * @param event - Event name
 * @param handler - QRL event handler  
 */
function useOnWindow(event: string, handler: QRL<(event: Event) => void>): void;

// Event handler type
type EventHandler<T, E> = QRL<(event: E, element: T) => any>;

// Multi-event handler type
type QRLEventHandlerMulti<T, E> = QRL<(event: E, element: T) => any> | undefined;

Usage Examples:

import { component$, useOn, useOnDocument, useOnWindow, $ } from "@builder.io/qwik";

export const EventDemo = component$(() => {
  // Component-level event listener
  useOn("click", $(() => {
    console.log("Component clicked");
  }));

  // Document-level event listener
  useOnDocument("keydown", $((event: KeyboardEvent) => {
    if (event.key === "Escape") {
      console.log("Escape pressed");
    }
  }));

  // Window-level event listener
  useOnWindow("resize", $(() => {
    console.log("Window resized");
  }));

  return <div>Click me or press Escape</div>;
});