viewModel() i en Composable
Hent og afgræns en ViewModel korrekt.
viewModel() i en Composable er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Hentning af en ViewModel
Inde i en Composable-funktion opretter du ikke en ViewModel med new. I stedet kalder du funktionen viewModel() for at hente den rigtige instans.
val vm: CounterViewModel = viewModel()Hvor den kommer fra
Hjælpefunktionen viewModel() finder den nærmeste livscyklusejer og returnerer den ViewModel, der er afgrænset til den. Den opretter kun en, hvis der endnu ikke findes en.
Samme instans ved rekombination
Rekombination kører din funktion mange gange, men viewModel() returnerer den samme instans hver gang, så din tilstand aldrig nulstilles uventet.
Læsning af tilstand fra den
Når du har ViewModel, læser du dens observerbare tilstand, og din Composable-funktion tegnes igen, hver gang tilstanden ændres. Brugergrænsefladen følger dataene. 🔗
val vm: CounterViewModel = viewModel()
Text("Count: " + vm.count)Kald af dens funktioner
Send brugerhandlinger til ViewModel ved at kalde dens funktioner fra hændelseslambdaer, så beslutningslogikken holdes ude af din Composable-funktion.
Button(onClick = { vm.increment() }) {
Text("Add")
}Importen
Funktionen kommer fra Compose-artefaktet til livscyklus. Importér androidx.lifecycle.viewmodel.compose.viewModel for at bruge den.
import androidx.lifecycle.viewmodel.compose.viewModelAfgrænsning som standard
Som standard er ViewModel afgrænset til værts-Activity'en eller navigationsdestinationen, så alle Composable-funktioner i området deler én instans. 🎯
Konstruktørargumenter
Har du brug for at sende afhængigheder ind? Angiv en factory, så rammeværket ved, hvordan det skal opbygge en ViewModel med konstruktørparametre.
val vm: CartViewModel = viewModel(factory = CartFactory(repo))Ophæv, send ikke ned
Kald viewModel() højt oppe, tæt på skærmens rod, og send derefter almindelig tilstand og tilbagekald ned, så underordnede Composable-funktioner kan genbruges.
Design, der fungerer i forhåndsvisning
Da viewModel() kræver en rigtig ejer, skal du designe underordnede komponenter til at modtage simple parametre, så de stadig kan gengives i en isoleret @Preview.
Et hurtigt mønster
Det almindelige flow er enkelt: Hent ViewModel, læs dens tilstand, og videresend hændelser til dens funktioner. Tre trin på hver skærm. ✨
Hurtigt tjek
Se, hvordan du henter en ViewModel fra en Composable-funktion.
Opsummering
Kald viewModel() for at hente en afgrænset ViewModel, læs dens tilstand for at styre brugergrænsefladen, og videresend brugerhændelser til dens funktioner i stedet for selv at oprette den.
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “viewModel() i en Composable” gratis?
Ja — hele teksten til “viewModel() i en Composable” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “viewModel() i en Composable”?
Hent og afgræns en ViewModel korrekt. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Jetpack Compose Academy?
Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “viewModel() i en Composable”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?
Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Hvorfor ViewModel overlever rotation
- viewModel() i en Composable
- Modellering af en UiState-dataklasse
- collectAsStateWithLifecycle