viewModel() w funkcji Composable
Pobieraj ViewModel i prawidłowo określaj jego zakres
viewModel() w funkcji Composable to bezpłatna lekcja Jetpack Compose Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Jetpack Compose Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.
Pobieranie ViewModel
Wewnątrz komponentu Composable nie tworzysz ViewModel za pomocą new. Zamiast tego wywołujesz funkcję viewModel(), aby pobrać właściwą instancję.
val vm: CounterViewModel = viewModel()Skąd pochodzi
Pomocnicza funkcja viewModel() wyszukuje najbliższego właściciela cyklu życia i zwraca powiązany z nim ViewModel, tworząc go tylko wtedy, gdy jeszcze nie istnieje.
Ta sama instancja podczas rekompozycji
Rekompozycja uruchamia funkcję wiele razy, jednak viewModel() za każdym razem zwraca tę samą instancję, więc stan nie jest nieoczekiwanie resetowany.
Odczytywanie z niego stanu
Gdy masz już ViewModel, odczytuj jego obserwowalny stan, a komponent Composable będzie rysowany ponownie za każdym razem, gdy stan się zmieni. Interfejs podąża za danymi. 🔗
val vm: CounterViewModel = viewModel()
Text("Count: " + vm.count)Wywoływanie jego funkcji
Przekazuj działania użytkownika do ViewModel, wywołując jego funkcje z lambd zdarzeń. Dzięki temu logika decyzyjna pozostaje poza komponentem Composable.
Button(onClick = { vm.increment() }) {
Text("Add")
}Import
Funkcja pochodzi z artefaktu lifecycle Compose. Zaimportuj androidx.lifecycle.viewmodel.compose.viewModel, aby jej używać.
import androidx.lifecycle.viewmodel.compose.viewModelDomyślny zakres
Domyślnie ViewModel jest powiązany z hostującą Activity lub miejscem docelowym nawigacji, więc wszystkie komponenty Composable w tym zakresie współdzielą jedną instancję. 🎯
Argumenty konstruktora
Potrzebujesz przekazać zależności? Udostępnij factory, aby framework wiedział, jak zbudować ViewModel mający parametry konstruktora.
val vm: CartViewModel = viewModel(factory = CartFactory(repo))Podnoś, nie przekazuj w dół
Wywołaj viewModel() wysoko, blisko głównego komponentu ekranu, a następnie przekazuj w dół zwykły stan i wywołania zwrotne, aby komponenty podrzędne Composable nadawały się do ponownego użycia.
Projekt przyjazny dla podglądu
Ponieważ viewModel() wymaga rzeczywistego właściciela, projektuj komponenty podrzędne tak, aby przyjmowały proste parametry i nadal renderowały się w odizolowanym @Preview.
Szybki wzorzec
Typowy przepływ jest prosty: pobierz ViewModel, odczytaj jego stan i przekaż zdarzenia do jego funkcji. Trzy kroki na każdym ekranie. ✨
Szybkie sprawdzenie
Sprawdź, jak pobierać ViewModel z komponentu Composable.
Podsumowanie
Wywołaj viewModel(), aby pobrać ViewModel o określonym zakresie, odczytaj jego stan, aby sterować interfejsem, i przekazuj zdarzenia użytkownika do jego funkcji zamiast tworzyć go samodzielnie.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „viewModel() w funkcji Composable” jest bezpłatna?
Tak — pełny tekst „viewModel() w funkcji Composable” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Jetpack Compose Academy, przejdź na CoddyKit PRO. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „viewModel() w funkcji Composable”?
Pobieraj ViewModel i prawidłowo określaj jego zakres Ćwiczysz Jetpack Compose Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Jetpack Compose Academy?
Nie wymagamy żadnego doświadczenia. Jetpack Compose Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „viewModel() w funkcji Composable”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Jetpack Compose Academy?
Tak. Każda lekcja Jetpack Compose Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego ViewModel przetrwa obracanie ekranu
- viewModel() w funkcji Composable
- Modelowanie klasy danych UiState
- collectAsStateWithLifecycle