From cac233ad5eb64c4bbdd1b189242cd0dbfec325e0 Mon Sep 17 00:00:00 2001 From: Bartlomiej Perucki Date: Thu, 26 Mar 2026 13:02:14 +0100 Subject: [PATCH] [EuiWindowEvent] Refactor class component to functional component --- .../src/services/window_event/window_event.ts | 39 +++++-------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/packages/eui/src/services/window_event/window_event.ts b/packages/eui/src/services/window_event/window_event.ts index 5c5488689a36..9e543ffc570e 100644 --- a/packages/eui/src/services/window_event/window_event.ts +++ b/packages/eui/src/services/window_event/window_event.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { Component } from 'react'; +import { useEffect } from 'react'; type EventNames = keyof WindowEventMap; @@ -15,34 +15,15 @@ interface Props { handler: (this: Window, ev: WindowEventMap[Ev]) => any; } -export class EuiWindowEvent extends Component> { - componentDidMount() { - this.addEvent(this.props); - } - - componentDidUpdate(prevProps: Props) { - if ( - prevProps.event !== this.props.event || - prevProps.handler !== this.props.handler - ) { - this.removeEvent(prevProps); - this.addEvent(this.props); - } - } - - componentWillUnmount() { - this.removeEvent(this.props); - } - - addEvent({ event, handler }: Props) { +export const EuiWindowEvent = ({ + event, + handler, +}: Props) => { + useEffect(() => { window.addEventListener(event, handler); - } - removeEvent({ event, handler }: Props) { - window.removeEventListener(event, handler); - } + return () => window.removeEventListener(event, handler); + }, [event, handler]); - render() { - return null; - } -} + return null; +};