Bentornati.
In questo video impareremo a conoscere il sollevamento dello Stato.
Lo State Hoisting è un concetto di Jetpack Compose che prevede il sollevamento
della gestione dello stato da un composable figlio a un composable padre.
Questo schema è comunemente usato per gestire lo stato in modo più centralizzato,
rendendo la base di codice più facile da comprendere, mantenere e testare.
Si inizia identificando un componibile che deve contenere alcuni dati e alcuni stati.
Potrebbe trattarsi di un campo di testo, di una casella di controllo, di un pulsante o di
qualsiasi altro componente che deve tracciare il suo stato, come un input dell'utente o lo stato selezionato.
Invece di gestire lo stato all'interno del bambino.
Composable stesso, si sposta la logica di gestione dello stato al genitore.
Componibile.
Ciò significa che il compositore genitore diventa responsabile di
mantenere lo stato e di passarlo al figlio.
Componibile come parametro.
Facciamo un esempio.
Ecco la differenza tra stateful e stateless.
Una funzione composta che mantiene il suo stato è detta stateful, mentre
una funzione composta che non mantiene il suo stato è detta stateless.
Questo è l'apolide.
Nella maggior parte dei casi, si vuole che il composable rimanga stateless.
Idealmente, lo stato dell'intero schermo viene calcolato in un unico punto,
di solito nel ViewModel, che lo trasmette a tutti i Composable.
Quindi si passano il valore dello stato ed eventuali callback necessari, come i gestori
di eventi per gli aggiornamenti dello stato dal genitore, componibile al figlio componibile come
parametri, mentre il livello di stato del vostro schermo componibile, quello responsabile del
rendering dell'intero schermo, è un buon candidato per mantenere lo stato dell'intero schermo.
Di solito questi composable hanno un riferimento a un ViewModel, che calcola lo
stato dell'intero schermo issando lo stato a un livello superiore per genitore.
Componibile.
Si crea un'unica fonte di verità per lo stato all'interno della gerarchia dei componenti.
In questo modo si favorisce un migliore incapsulamento, la separazione delle preoccupazioni e la riutilizzabilità dei singoli componenti.
Inoltre, semplifica i test, in quanto è possibile testare il comportamento dei componenti con
stato in isolamento, fornendo lo stato mock e i callback dei componenti genitori.
Lo vedremo nelle sezioni dedicate all'iniezione di dipendenza, ma qui voglio che vi concentriate con me sul
fatto che, per trasformare un composito statico in uno statico, dobbiamo usare il sollevamento dello stato.
Ad esempio, qui abbiamo il contatore stateful.
Gestisce il proprio stato utilizzando una variabile chiamata count by remember.
E si parte da zero.
Quindi questo composito gestisce il proprio stato.
Se abbiamo bisogno di renderlo stateless, useremo il sollevamento dello stato.
Di nuovo.
L'accumulo di stato significa rimuovere qualsiasi stato persistente da una funzione componibile.
In questo caso è necessario rimuovere il conteggio.
Invece, si passa lo stato attraverso i parametri della funzione.
Lo stateless composable riceverà la sua variabile parameter count e il lambda onclick.
Quindi nel contatore stateful abbiamo il conteggio come prima
dipendenza e la seconda dipendenza è l'evento click.
Gestire l'evento click aumentando il conteggio e il comportamento.
Nel contatore stateless, passiamo il conteggio e il comportamento.
Quando l'utente fa clic sul pulsante, si può notare la pulizia del contatore stateless,
che mostra solo il pulsante e il testo in modo semplice e pulito.
Quindi, nel contatore stateless, non ci preoccupiamo di cosa fare quando l'utente fa clic
sul pulsante o di quale testo visualizzare e di gestire la variabile del conteggio.
Nei prossimi video, impareremo a conoscere stateful e stateless.