Escriu per cercar…

Efecte

Durant la composició de la interfície d'usuari pot ser necessari executar accions no relacionades amb la composició i que han d'executar-se fora del procés de composició.

Introducció

Entorn de treball

Crea un projecte effect.

SideEffect

SideEffect és una funció componible que executa un bloc de codi cada vegada que el seu component pare es recompon, i que s’executa de manera independent al final del procés de composició.

Per exemple, a continuació tens un codi que no utilitza un SideEffect, i que registra que la cosa va 🥳 quan en realitat ha anat 👺 perquè no espera que hagi finalitzat tot el procés de recomposició:

kotlin
@Composable
fun App() {
    log()
    Text("Hello Word!")
    throw Exception("Evil 👺")
}

fun log() {
    println("Everything Went Well 🥳")
}

Si executes el codi pots veure que s’imprimeix el log 🥳, encara que la composició ha estat 👺

ps
Everything Went Well 🥳
Exception in thread "main" java.lang.Exception: Evil ?

Això passa perquè el procés de composició ha executat la crida a log() quan tu li has dit que havia d’executar-ho.

En canvi, si utilitzes un SideEffect com en aquest exemple, la funció componible només s’executa al final de la composició si la composició s’ha pogut realitzar.

kotlin
@Composable
fun App() {
    SideEffect {
        log()
    }
    Text("Hello Word!")
    throw Exception("Evil 👺")
}

Si executes el codi segueix anant 👺, però almenys no queda registrat que la composició ha anat 🥳:

ps
Exception in thread "main" java.lang.Exception: Evil ?

Estàs llegint una vista prèvia.

Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.

Inicia sessió