Tilan nostaminen
Nostakaa tila ylemmälle tasolle uudelleenkäytettäviä composableja varten.
Tilan nostaminen on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä tilan nostaminen on?
Tilan nostaminen tarkoittaa tilan siirtämistä ylemmäs pois composable-funktiosta sen kutsujalle. Composable-funktiosta tulee tilaton: se vastaanottaa arvon ja ilmoittaa muutoksista.
Tilallinen ja tilaton
Tilallinen composable-funktio omistaa tilansa remember-funktion avulla. Tilaton composable-funktio ei sisällä tilaa, vaan ottaa arvon parametrina ja tarjoaa tapahtuman. Tilattomia composable-funktioita on helpompi käyttää uudelleen ja testata.
value + onValueChange -malli
Vakiomuotoisessa tilan nostamisessa on kaksi parametria: value (nykyinen tila, välitetään alaspäin) ja onValueChange-lambda (tapahtuma, välitetään ylöspäin).
@Composable
fun NameField(value: String, onValueChange: (String) -> Unit) {
TextField(value = value, onValueChange = onValueChange)
}Ennen tilan nostamista
Tässä composable-funktio omistaa tilansa. Ratkaisu toimii, mutta ylätason komponentti ei pääse käsiksi tekstiin ja composable-funktiota on vaikeampi käyttää uudelleen.
@Composable
fun NameField() {
var name by remember { mutableStateOf("") }
TextField(value = name, onValueChange = { name = it })
}Tilan nostamisen jälkeen
Nyt tila sijaitsee ylätason komponentissa. Kenttä on tilaton ja uudelleenkäytettävä, ja ylätason komponentti hallitsee arvoa.
@Composable
fun Parent() {
var name by remember { mutableStateOf("") }
NameField(value = name, onValueChange = { name = it })
}Alas ja ylös
Malli on tila kulkee alas, tapahtumat ylöspäin. Arvo kulkee alas parametrina, ja muutokset kulkevat ylöspäin takaisinsoiton kautta. Tätä kutsutaan yksisuuntaiseksi tietovirraksi.
Miksi tila nostetaan?
Tilan nostaminen mahdollistaa saman tilan jakamisen useiden composable-funktioiden kesken, antaa ylätason komponentin reagoida muutoksiin ja tekee alikomponentista syötteidensä puhtaan funktion — täydellinen ratkaisu esikatseluihin ja testeihin.
Minne tila nostetaan?
Nostakaa tila sen alimman yhteisen esivanhemman tasolle, joka tarvitsee sitä. Jos vain yksi composable-funktio käyttää tilaa, nostaminen voi olla tarpeetonta. Nostakaa tila, kun jokin ylempänä tarvitsee lukea tai hallita sitä.
Jaettu esimerkki
Tässä yksi tila ohjaa sekä kenttää että reaaliaikaista esikatselua. Tämä on mahdollista vain, koska tila on nostettu.
@Composable
fun Editor() {
var text by remember { mutableStateOf("") }
Column {
TextField(value = text, onValueChange = { text = it })
Text(text = "Preview: $text")
}
}Tilaton on uudelleenkäytettävä
Koska tilaton composable-funktio ottaa arvonsa parametrina, voitte esikatsella sitä esimerkkidatan avulla ja käyttää sitä missä tahansa eri tilan omistajien kanssa.
@Preview
@Composable
fun NameFieldPreview() {
NameField(value = "Sample", onValueChange = {})
}Kootaan kokonaisuus
Uudelleenkäytettävä laskuri, jossa ylätason komponentti omistaa laskurin arvon ja painike on tilaton.
@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++ })
}Pikatarkistus
Mitä kahta asiaa tilaton composable-funktio tyypillisesti tarjoaa tilan nostamisessa?
Kertaus
Tilan nostaminen:
- Siirtäkää tila ylöspäin kutsujalle ja tehkää alikomponentista tilaton.
- Käyttäkää
value+onValueChange-mallia. - Tila alas, tapahtumat ylös — yksisuuntainen tietovirta.
- Nostakaa tila alimman sitä tarvitsevan yhteisen esivanhemman tasolle.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Tilan nostaminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tilan nostaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tilan nostaminen”?
Nostakaa tila ylemmälle tasolle uudelleenkäytettäviä composableja varten. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Tilan nostaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?
Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.