G
gpui-entity
Bezpieczne zarządzanie stanem komponentów w GPUI z obsługą operacji asynchronicznych
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Skill do pracy z encjami i stanem aplikacji w GPUI. Umożliwia bezpieczny dostęp do stanu współdzielonego między komponentami, obsługę operacji asynchronicznych z aktualizacją stanu oraz implementację reaktywnych wzorców. Entity zapewnia bezpieczny dostęp do stanu aplikacji w środowisku wielowątkowym — czytasz stan za pomocą read(), aktualizujesz go update(), a słabe referencje (WeakEntity) chronią przed wyciekami pamięci w callbackach i zamknięciach.
Jak używać
- 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ą.