iis配置网站是什么,小网站推广,夸克搜索网页版,那个网站教人做冰点一、概念
纯函数函数与外界交换数据只能通过形参和返回值进行#xff0c;不会对外界环境产生影响。副作用函数内部与外界进行了交互#xff0c;产生了其它结果#xff08;如修改外部变量#xff09;。组合函数是用来声明UI的#xff0c;所以跟UI描述不相关的操作都是副作…一、概念
纯函数函数与外界交换数据只能通过形参和返回值进行不会对外界环境产生影响。副作用函数内部与外界进行了交互产生了其它结果如修改外部变量。组合函数是用来声明UI的所以跟UI描述不相关的操作都是副作用。组合函数的特点执行顺序不定、可以并行执行、可能非常频繁的重组、可以跳过重组。组合函数需要处理的副作用 执行时机要明确例如挂载时、重组时。 执行次数要可控是否应该随着重组反复执行。 不会造成泄漏移除时释放资源。
Compose生命周期 某个组合被多个地方使用会生成多个实例有各自的生命周期。 Enter挂载到树上首次显示。Composition重组刷新UI执行0/N次。Leave从树上移除不再显示。
API
LaunchedEffect第一次执行组合函数时调用、DisposableEffect内部有一个onDespose()函数当页面退出时调用、SideEffect每次重组都会调用。
二、Effect API 组合函数应该是无副作用的如果要在组合函数中产生附带效应需要使用EffectAPI。 2.1 LaunchedEffect 也是一个组合函数但是不产生UI。副作用往往都是耗时操作提供协程作用域以便在组合函数中做耗时操作动画也是耗时操作。 组合函数生命周期LaunchedEffect挂载启动一个协程并执行block。重组key改变时之前未执行完会被取消然后再次执行block。key不变时不会重新执行block。移除协程未执行完会被取消。动画会被打断fun LaunchedEffect( key1: Any?, //key值改变就会执行block默认挂载时就会执行一次 block: suspend CoroutineScope.() - Unit )
val state remember { mutableStateOf(false) }
LaunchedEffect(state) {//...耗时操作或动画
}
2.2 rememberCoroutineScope 用于在组合外启动协程LaunchedEffect是组合函数只能在其它组合中调用。