gpui-event
Event handling and subscriptions in GPUI. Use when implementing events, observers, or event-driven patterns. Supports custom events, entity observations, and event subscriptions for coordinating between components.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Event handling and subscriptions in GPUI. Use when implementing events, observers, or event-driven patterns. Supports custom events, entity observations, and event subscriptions for coordinating between components.
How to use
Zdefiniuj enum dla swoich zdarzeń, dodając warianty dla każdego typu zdarzenia, które chcesz emitować (np. DataUpdated z danymi lub ActionTriggered bez parametrów). Oznacz enum atrybutem #[derive(Clone)], aby umożliwić klonowanie zdarzeń.
W metodzie komponentu, która zmienia stan, wyemituj zdarzenie za pomocą cx.emit(TwojZdarzenie::Wariant), a następnie wywołaj cx.notify(), aby powiadomić system o zmianie.
Aby nasłuchiwać zdarzeń z innego komponentu, użyj cx.subscribe() w konstruktorze słuchacza, przekazując referencję do źródła zdarzeń i closure, który obsługuje każdy wariant zdarzenia.
W closure subskrypcji dopasuj wzorzec zdarzenia (match event) i wykonaj odpowiednią akcję dla każdego wariantu, na przykład zaktualizuj stan lub wyzwól callback.
Aby reagować na zmiany stanu encji bez zdefiniowanych zdarzeń, użyj cx.observe() zamiast subscribe — obserwator zostanie powiadomiony za każdym razem, gdy obserwowana encja wywoła cx.notify().
Pamiętaj, aby odłączyć subskrypcje i obserwatory za pomocą .detach(), aby uniknąć wycieków pamięci i niepotrzebnych powiadomień.