Podnoszenie stanu
Przenieś stan wyżej, aby tworzyć wielokrotnie używalne funkcje composable
Podnoszenie stanu to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.
Czym jest podnoszenie stanu?
Podnoszenie stanu oznacza przeniesienie stanu wyżej, poza composable, do jego wywołującego. Composable staje się wtedy bezstanowy: otrzymuje wartość i zgłasza jej zmiany.
Stanowy a bezstanowy
Stanowy composable przechowuje własny stan za pomocą remember. Bezstanowy nie przechowuje stanu; przyjmuje wartość jako parametr i udostępnia zdarzenie. Bezstanowe composable łatwiej ponownie wykorzystywać i testować.
Schemat value + onValueChange
Standardowy schemat podnoszenia stanu obejmuje dwa parametry: value (bieżący stan przekazywany w dół) oraz lambdę onValueChange (zdarzenie przekazywane w górę).
@Composable
fun NameField(value: String, onValueChange: (String) -> Unit) {
TextField(value = value, onValueChange = onValueChange)
}Przed podniesieniem stanu
W tym przypadku composable przechowuje własny stan. Działa to poprawnie, ale rodzic nie ma dostępu do tekstu, a composable trudniej ponownie wykorzystać.
@Composable
fun NameField() {
var name by remember { mutableStateOf("") }
TextField(value = name, onValueChange = { name = it })
}Po podniesieniu stanu
Teraz stan znajduje się w komponencie nadrzędnym. Pole jest bezstanowe i wielokrotnego użytku, a rodzic kontroluje jego wartość.
@Composable
fun Parent() {
var name by remember { mutableStateOf("") }
NameField(value = name, onValueChange = { name = it })
}W dół i w górę
Ten schemat można podsumować tak: stan przepływa w dół, a zdarzenia w górę. Wartość jest przekazywana w dół jako parametr, a zmiany w górę za pomocą wywołania zwrotnego. Nazywa się to jednokierunkowym przepływem danych.
Po co podnosić stan?
Podnoszenie stanu pozwala wielu composable współdzielić ten sam stan, umożliwia rodzicowi reagowanie na zmiany i sprawia, że element potomny jest czystą funkcją swoich danych wejściowych — idealną do podglądów i testów.
Dokąd podnosić stan
Stan należy podnosić do najniższego wspólnego przodka, który go potrzebuje. Jeśli ze stanu korzysta tylko jeden composable, podnoszenie może być zbędne. Należy podnosić stan wtedy, gdy coś wyżej musi go odczytywać lub kontrolować.
Wspólny przykład
W tym przykładzie jeden fragment stanu steruje zarówno polem, jak i podglądem na żywo — jest to możliwe tylko dlatego, że stan został podniesiony.
@Composable
fun Editor() {
var text by remember { mutableStateOf("") }
Column {
TextField(value = text, onValueChange = { text = it })
Text(text = "Preview: $text")
}
}Bezstanowość ułatwia ponowne użycie
Ponieważ bezstanowy composable przyjmuje wartość jako parametr, można wyświetlać jego podgląd z przykładowymi danymi i używać go w dowolnym miejscu, z różnymi właścicielami stanu.
@Preview
@Composable
fun NameFieldPreview() {
NameField(value = "Sample", onValueChange = {})
}Połączenie wszystkiego
Wielokrotnego użytku licznik, w którym rodzic przechowuje wartość, a przycisk jest bezstanowy.
@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++ })
}Szybkie sprawdzenie
Jakie dwie rzeczy zazwyczaj udostępnia bezstanowy composable przy podnoszeniu stanu?
Podsumowanie
Podnoszenie stanu:
- Przenosi stan do wywołującego i sprawia, że element potomny jest bezstanowy.
- Wykorzystuje schemat
value+onValueChange. - Stan w dół, zdarzenia w górę — jednokierunkowy przepływ danych.
- Stan należy podnosić do najniższego wspólnego przodka, który go potrzebuje.
Często zadawane pytania
Czy lekcja „Podnoszenie stanu” jest bezpłatna?
Tak — pełny tekst „Podnoszenie stanu” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podnoszenie stanu”?
Przenieś stan wyżej, aby tworzyć wielokrotnie używalne funkcje composable Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Android Academy?
Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Podnoszenie stanu”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?
Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.