G
gpui-entity
Entity management and state handling in GPUI. Use when working with entities, managing component state, coordinating between components, handling async operations with state updates, or implementing reactive patterns. Entities provide safe concurrent access to application state.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Entity management and state handling in GPUI. Use when working with entities, managing component state, coordinating between components, handling async operations with state updates, or implementing reactive patterns. Entities provide safe concurrent access to application state.
How to use
- Zainstaluj skill w swoim projekcie GPUI, dodając go do konfiguracji Claude/Copilot dla tego repozytorium.
- Utwórz encję za pomocą cx.new(), przekazując inicjalizator stanu — na przykład cx.new(|cx| Counter { count: 0 }) tworzy encję licznika.
- Odczytaj stan encji za pomocą entity.read(cx), które zwraca immutable referencję do stanu, lub entity.read_with(cx, |state, cx| ...), jeśli chcesz przetworzyć dane w zamknięciu.
- Aktualizuj stan za pomocą entity.update(cx, |state, cx| { ... }), modyfikując pole stanu wewnątrz zamknięcia i wywołując cx.notify(), aby wyzwolić przerysowanie komponentu.
- Dla callbacków i zamknięć, które mogą przetrwać dłużej niż encja, utwórz słabą referencję za pomocą entity.downgrade(), która zwraca WeakEntity — ta nie zapobiega czyszczeniu i zwraca Result, bezpiecznie obsługując przypadek, gdy encja została już usunięta.
- Współdziel encję między komponentami, przekazując ją jako pole struktury komponentu — każdy komponent może niezależnie czytać i aktualizować ten sam stan, a cx.notify() zapewnia, że wszystkie komponenty się przerysują.