Elevare lo stato con value e onValueChange
Passi lo stato verso il basso e gli eventi verso l'alto.
Elevare lo stato con value e onValueChange è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 2 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 Jetpack Compose Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Elevazione dello stato in una riga
La state hoisting consiste nello spostare lo stato fuori da una Composable e trasferirlo al chiamante. Il componente diventa stateless e il controllo rimane al componente padre.
Il pattern fondamentale
Sostituisca lo stato interno con due parametri: un value da visualizzare e una callback onValueChange per segnalare le modifiche.
fun NameField(value: String, onValueChange: (String) -> Unit) {
TextField(value = value, onValueChange = onValueChange)
}Stato verso il basso, eventi verso l’alto
I dati fluiscono verso il basso tramite value; le azioni dell’utente fluiscono verso l’alto tramite onValueChange. Questo ciclo a senso unico si chiama flusso unidirezionale dei dati. ↕️
Chi possiede ora lo stato
Il componente padre possiede lo stato usando remember e lo passa al componente figlio. Il figlio non lo memorizza mai, quindi due chiamanti possono gestire lo stesso componente in modi diversi.
var name by remember { mutableStateOf("") }
NameField(value = name, onValueChange = { name = it })value: il lato di lettura
Il parametro value rappresenta ciò che il componente visualizza in questo momento. Per il componente figlio è di sola lettura: il figlio non lo modifica mai direttamente.
onValueChange: il lato di scrittura
Quando l’utente digita, il figlio chiama onValueChange(newText). Il componente padre decide se e come aggiornare il proprio stato.
Perché non modificare sul posto
Un componente figlio stateless non può semplicemente riassegnare value, perché è solo un input. Segnalare la modifica verso l’alto mantiene il controllo nelle mani di un unico proprietario.
Componenti controllati
Questo è un componente controllato: il componente padre decide completamente cosa viene visualizzato. Può trasformare, ignorare o convalidare l’input prima di memorizzarlo.
NameField(value = name, onValueChange = { name = it.uppercase() })Riutilizzare lo stesso campo
Poiché lo stato del campo è stato elevato, può inserirlo in una schermata di accesso, in una barra di ricerca o in una pagina delle impostazioni, ognuna con il proprio stato proprietario.
Elevare lo stato oltre il testo
Questo pattern si adatta a qualsiasi stato: un Boolean checked con onCheckedChange, un elemento selezionato con onSelect. La stessa idea, con nomi diversi.
fun ToggleRow(checked: Boolean, onCheckedChange: (Boolean) -> Unit) {
Switch(checked = checked, onCheckedChange = onCheckedChange)
}Una regola semplice
Eleve lo stato al più basso componente padre comune che deve leggerlo o modificarlo, e non più in alto. In questo modo la proprietà rimane chiara e il codice pulito.
Verifica rapida
Nel pattern di state hoisting, cosa fa il componente figlio quando l’utente digita?
Riepilogo
La state hoisting sostituisce lo stato interno con value e onValueChange. Lo stato fluisce verso il basso, gli eventi verso l’alto e il componente padre mantiene il controllo. 🚀
Impara Kotlin con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Elevare lo stato con value e onValueChange» è gratuita?
Sì — il testo completo di «Elevare lo stato con value e onValueChange» è 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 Jetpack Compose Academy, passa a CoddyKit PRO. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Cosa imparerò in «Elevare lo stato con value e onValueChange»?
Passi lo stato verso il basso e gli eventi verso l'alto. Eserciti Jetpack Compose 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 Jetpack Compose Academy?
Non è richiesta alcuna esperienza precedente. Jetpack Compose 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 2 di 4.
Quanto tempo richiede la lezione «Elevare lo stato con value e onValueChange»?
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 Jetpack Compose Academy?
Sì. Ogni lezione Jetpack Compose 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.
Tutte le lezioni di questo corso
- Composable stateful e stateless
- Elevare lo stato con value e onValueChange
- Un'unica fonte di verità
- Slot di stato Compose e lambda di contenuto