Android Academy · Les

State hoisting

Verplaats state omhoog voor herbruikbare composables.

Les 3 van 413 stappen

State hoisting is een gratis Android Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.

Wat is statusverheffing?

Statusverheffing betekent dat je status omhoog verplaatst, uit een composable naar de aanroeper ervan. De composable wordt stateloos: deze ontvangt alleen een waarde en meldt wijzigingen.

Stateful versus stateless

Een stateful composable beheert zijn status met remember. Een stateless composable bevat geen status; deze neemt de waarde als parameter aan en stelt een gebeurtenis beschikbaar. Stateless composables zijn gemakkelijker opnieuw te gebruiken en te testen.

Het patroon value + onValueChange

De standaardvorm voor statusverheffing heeft twee parameters: een value (de huidige status, doorgegeven naar beneden) en een onValueChange-lambda (de gebeurtenis, doorgegeven naar boven).

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

Voor statusverheffing

Hier beheert de composable haar eigen status. Dat werkt, maar de ouder heeft geen toegang tot de tekst en de composable is moeilijker opnieuw te gebruiken.

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

Na statusverheffing

Nu bevindt de status zich in de ouder. Het veld is stateless en opnieuw bruikbaar; de ouder beheert de waarde.

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

Naar beneden en naar boven

Het patroon is status stroomt naar beneden, gebeurtenissen stromen naar boven. De waarde gaat als parameter naar beneden; wijzigingen gaan via de callback naar boven. Dit heet unidirectionele gegevensstroom.

Waarom status verheffen?

Met statusverheffing kunnen meerdere composables dezelfde status delen, kan de ouder op wijzigingen reageren en wordt het kind een zuivere functie van zijn invoer — perfect voor voorvertoningen en tests.

Waarheen status verheffen?

Verhef status naar de laagste gemeenschappelijke voorouder die deze nodig heeft. Als slechts één composable de status gebruikt, is statusverheffing misschien niet nodig. Verhef de status wanneer iets hoger in de hiërarchie deze moet lezen of beheren.

Een gedeeld voorbeeld

Hier stuurt één statuswaarde zowel een veld als een live voorvertoning aan. Dat is alleen mogelijk omdat de status is verheven.

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

Stateless is opnieuw bruikbaar

Omdat een stateless composable zijn waarde als parameter ontvangt, kun je deze met voorbeeldgegevens weergeven en overal gebruiken met verschillende eigenaren van de status.

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

Alles samenbrengen

Een opnieuw bruikbare teller waarbij de ouder count beheert en de knop stateless is.

@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++ })
}

Korte controle

Welke twee dingen stelt de stateless composable bij statusverheffing doorgaans beschikbaar?

Samenvatting

Statusverheffing:

  • Verplaats status naar de aanroeper en maak het kind stateless.
  • Gebruik het patroon value + onValueChange.
  • Status naar beneden, gebeurtenissen naar boven — unidirectionele gegevensstroom.
  • Verhef de status naar de laagste gemeenschappelijke voorouder die deze nodig heeft.
Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
36
Lessen
152

Veelgestelde vragen

Is de les “State hoisting” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “State hoisting”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.

Wat leer ik in “State hoisting”?

Verplaats state omhoog voor herbruikbare composables. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Android Academy te beginnen?

Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “State hoisting”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Android Academy?

Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. State met remember en mutableStateOf
  2. Recomposition uitgelegd
  3. State hoisting
  4. rememberSaveable
← Terug naar Android Academy