State hoisting
Sposti lo stato verso l'alto per creare composable riutilizzabili.
State hoisting è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Che cos'è il sollevamento dello stato?
Il sollevamento dello stato consiste nello spostare lo stato verso l'alto, fuori da un composable, portandolo nel chiamante. Il composable diventa privo di stato: riceve semplicemente un valore e comunica le modifiche.
Con stato e senza stato
Un composable con stato possiede il proprio stato usando remember. Un composable privo di stato non conserva alcuno stato: riceve il valore come parametro ed espone un evento. I composable privi di stato sono più facili da riutilizzare e testare.
Il pattern value + onValueChange
La struttura standard del sollevamento prevede due parametri: un value (lo stato corrente, passato verso il basso) e una lambda onValueChange (l'evento, passato verso l'alto).
@Composable
fun NameField(value: String, onValueChange: (String) -> Unit) {
TextField(value = value, onValueChange = onValueChange)
}Prima del sollevamento
Qui il composable possiede il proprio stato. Funziona, ma il genitore non ha accesso al testo e il composable è più difficile da riutilizzare.
@Composable
fun NameField() {
var name by remember { mutableStateOf("") }
TextField(value = name, onValueChange = { name = it })
}Dopo il sollevamento
Ora lo stato risiede nel genitore. Il campo è privo di stato e riutilizzabile; il genitore controlla il valore.
@Composable
fun Parent() {
var name by remember { mutableStateOf("") }
NameField(value = name, onValueChange = { name = it })
}Verso il basso e verso l'alto
Il pattern è lo stato fluisce verso il basso, gli eventi verso l'alto. Il valore scende come parametro, mentre le modifiche risalgono tramite il callback. Questo si chiama flusso unidirezionale dei dati.
Perché sollevare lo stato?
Il sollevamento consente a più composable di condividere lo stesso stato, permette al genitore di reagire alle modifiche e rende il figlio una funzione pura dei propri input: è ideale per anteprime e test.
Dove sollevare lo stato
Solleva lo stato fino al progenitore comune più basso che ne ha bisogno. Se lo stato viene usato da un solo composable, il sollevamento potrebbe non essere necessario. Lo sollevi quando qualcosa più in alto deve leggerlo o controllarlo.
Un esempio condiviso
Qui una singola parte dello stato controlla sia un campo sia un'anteprima in tempo reale, cosa possibile solo perché lo stato è stato sollevato.
@Composable
fun Editor() {
var text by remember { mutableStateOf("") }
Column {
TextField(value = text, onValueChange = { text = it })
Text(text = "Preview: $text")
}
}Senza stato significa riutilizzabile
Poiché un composable privo di stato riceve il proprio valore come parametro, può visualizzarlo in anteprima con dati di esempio e usarlo ovunque con proprietari dello stato diversi.
@Preview
@Composable
fun NameFieldPreview() {
NameField(value = "Sample", onValueChange = {})
}Mettere tutto insieme
Un contatore riutilizzabile in cui il genitore possiede count e il pulsante è privo di stato.
@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++ })
}Verifica rapida
Nel sollevamento dello stato, quali sono le due cose che un composable privo di stato espone generalmente?
Riepilogo
Sollevamento dello stato:
- Spostare lo stato nel chiamante e rendere il figlio privo di stato.
- Utilizzare il pattern
value+onValueChange. - Stato verso il basso, eventi verso l'alto: flusso unidirezionale dei dati.
- Sollevare lo stato fino al progenitore comune più basso che ne ha bisogno.
Domande Frequenti
La lezione «State hoisting» è gratuita?
Sì — il testo completo di «State hoisting» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «State hoisting»?
Sposti lo stato verso l'alto per creare composable riutilizzabili. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «State hoisting»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.