Android Academy · leksjon

Tilstandsløfting

Løft tilstanden opp for å lage gjenbrukbare composable-funksjoner.

Leksjon 3 av 413 trinn

Tilstandsløfting er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Android Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Android Academy inneholder totalt 4 leksjoner.

Hva er tilstandsheving?

Tilstandsheving betyr å flytte tilstanden oppover, ut av en composable og til kalleren. Composable-en blir tilstandsløs: Den mottar bare en verdi og rapporterer endringer.

Med og uten tilstand

En tilstandsfull composable eier tilstanden sin med remember. En tilstandsløs composable inneholder ingen tilstand; den tar verdien som en parameter og eksponerer en hendelse. Tilstandsløse composables er enklere å gjenbruke og teste.

Mønsteret value + onValueChange

Standardformen for tilstandsheving har to parametere: en value (gjeldende tilstand, sendt ned) og en onValueChange-lambda (hendelse, sendt opp).

@Composable
fun NameField(value: String, onValueChange: (String) -> Unit) {
    TextField(value = value, onValueChange = onValueChange)
}

Før tilstandsheving

Her eier composable-en tilstanden sin. Det fungerer, men forelderen har ikke tilgang til teksten, og composable-en er vanskeligere å gjenbruke.

@Composable
fun NameField() {
    var name by remember { mutableStateOf("") }
    TextField(value = name, onValueChange = { name = it })
}

Etter tilstandsheving

Nå ligger tilstanden i forelderen. Feltet er tilstandsløst og gjenbrukbart; forelderen styrer verdien.

@Composable
fun Parent() {
    var name by remember { mutableStateOf("") }
    NameField(value = name, onValueChange = { name = it })
}

Ned og opp

Mønsteret er tilstand ned, hendelser opp. Verdien sendes ned som en parameter, mens endringer sendes opp gjennom callback-en. Dette kalles ensrettet dataflyt.

Hvorfor heve tilstanden?

Tilstandsheving lar flere composables dele den samme tilstanden, lar forelderen reagere på endringer og gjør barnet til en ren funksjon av inndataene sine — perfekt for forhåndsvisninger og tester.

Hvor skal tilstanden heves?

Hev tilstanden til den laveste felles forfaderen som trenger den. Hvis bare én composable bruker tilstanden, kan tilstandsheving være unødvendig. Hev den når noe høyere opp trenger å lese eller styre den.

Et delt eksempel

Her styrer én enkelt tilstand både et felt og en direkte forhåndsvisning, noe som bare er mulig fordi tilstanden er hevet.

@Composable
fun Editor() {
    var text by remember { mutableStateOf("") }
    Column {
        TextField(value = text, onValueChange = { text = it })
        Text(text = "Preview: $text")
    }
}

Tilstandsløs betyr gjenbrukbar

Fordi en tilstandsløs composable tar verdien som en parameter, kan du forhåndsvise den med eksempeldata og bruke den hvor som helst med andre tilstandseiere.

@Preview
@Composable
fun NameFieldPreview() {
    NameField(value = "Sample", onValueChange = {})
}

Slik henger det sammen

En gjenbrukbar teller der forelderen eier telleren, og knappen er tilstandsløs.

@Composable
fun CounterButton(count: Int, onIncrement: () -> Unit) {
    Button(onClick = onIncrement) {
        Text(text = "Count: $count")
    }
}

@Composable
fun Screen() {
    var count by remember { mutableStateOf(0) }
    CounterButton(count = count, onIncrement = { count++ })
}

Hurtigsjekk

Hva eksponerer den tilstandsløse composable-en vanligvis i forbindelse med tilstandsheving?

Oppsummering

Tilstandsheving:

  • Flytt tilstanden opp til kalleren, og gjør barnet tilstandsløst.
  • Bruk mønsteret value + onValueChange.
  • Tilstand ned, hendelser opp — ensrettet dataflyt.
  • Hev tilstanden til den laveste felles forfaderen som trenger den.
Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
36
Leksjoner
152

Ofte stilte spørsmål

Er leksjonen «Tilstandsløfting» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «Tilstandsløfting», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Android Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Tilstandsløfting»?

Løft tilstanden opp for å lage gjenbrukbare composable-funksjoner. Du øver på Android Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Android Academy?

Ingen tidligere erfaring er nødvendig. Android Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Tilstandsløfting»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Android Academy-leksjonen?

Ja. Alle Android Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Tilstand med remember og mutableStateOf
  2. Rekomposisjon forklart
  3. Tilstandsløfting
  4. rememberSaveable
← Tilbake til Android Academy