Kotlin Compose 重组

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin Compose 重组相关的知识,希望对你有一定的参考价值。

重组,指的是任何Composable函数在任何时候都可以被重新调用,如果您有一个庞大的Composable层级结构,当您的层级中的某一部分发生改变时,您不会希望重新计算整个层级结构,所以Composable函数时可重新启动的(restartbale)的

您可以利用这一特性来实现一些强大的功能。

举个例子

这里有一个Bind函数 里面是一些android开发的常见代码

fun bind(liveMsgs: LiveData<MessageData>)
      liveMsgs.observe(this)  nsgs->
            updateBody(msgs)

        


我们有一个LiveData,并且希望视图可以订阅它,为此,我们调用observe方法并传入一个LifecycleOwner,并在接下来传入lambda。lambda会在每次LiveData更新被调用,并且发生这种情况时,我们会想要更新视图

使用Compose

@Composable
fun bind(liveMsgs: LiveData<MessageData>)

val msgs by liveMsgs.observeAsState()

for (msg in msgs)

Message(msg)

   


Compose 提供了一种现代方法来定义您的ui

。。现代有点像flutter swiftUi

这是您可以有效的关注点分离。

由于Composable函数与普通Kotlin函数很相似。因此您使用Compose编写和重构UI所使用的工具

与您进行Android开发的知识储备将会无缝衔接。

以上是关于Kotlin Compose 重组的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose:更新列表元素内容时不会发生重组

Compose 类型稳定性注解:@Stable & @Immutable

Compose 类型稳定性注解:@Stable & @Immutable

Kotlin Compose 状态恢复 rememberSaveable 与 remember

Jetpack Compose – LazyColumn 不重组

Jetpack Compose - Effect与协程 (十五)